Retrofit请求网络解析json,写的太详细了

android:layout_height=“match_parent”></android.support.v7.widget.RecyclerView>

item:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”>

<ImageView

android:id=“@+id/imageView”

android:layout_width=“0dp”

android:layout_height=“120dp”

android:layout_weight=“2” />

<TextView

android:id=“@+id/textView”

android:layout_width=“0dp”

android:layout_height=“120dp”

android:layout_weight=“3”

android:gravity=“center” />

之后写一个RecyclerView的适配器,用具加入图片和文字

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyHolder> {

private Context context;

private List<JavaBean.DataBean> data;//数据源集合

//构造方法

public RecyclerViewAdapter(Context context, List<JavaBean.DataBean> data) {

this.context = context;

this.data = data;

}

@NonNull

@Override

public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

View inflate = LayoutInflater.from(context).inflate(R.layout.item, viewGroup, false);

return new MyHolder(inflate);

}

@Override

public void onBindViewHolder(@NonNull MyHolder myHolder, int i) {

Picasso.with(context).load(data.get(i).getPic()).into(myHolder.imageView);//加入图片

myHolder.textView.setText(data.get(i).getTitle());//加入名字

}

@Override

public int getItemCount() {

return data.size();//返回集合size

}

public class MyHolder extends RecyclerView.ViewHolder {

ImageView imageView;

TextView textView;

public MyHolder(@NonNull View itemView) {

super(itemView);

imageView = itemView.findViewById(R.id.imageView);

textView = itemView.findViewById(R.id.textView);

}

}

}

提供网络字符串:http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1

写出解析类JavaBean类,即解析类!

接下来是重点,如何通过Retrofit获取网络数据,看java代码

Retrofit retrofit = new Retrofit.Builder()

.baseUrl(“https://1604a.com/data/”)//网络数据源,网址前半段

.addConverterFactory(GsonConverterFactory.create())//解析

.build();

创建接口,get请求方式,写入网址的后半段,即最后一个“/”之后的字符,像下面这么写

public interface MyInterface {

@GET(“ymdx.json”)

Call gerRequest();

}

接着使用这个接口

MyInterface myInterface = retrofit.create(MyInterface.class);

Call call = myInterface.gerRequest();

接下来写Call的一个方法enqueue,注释有详细标明

call.enqueue(new Callback() {

//成功

@Override

public void onResponse(Call call, Response response) {

//解析添加到创建的集合

arrayList = response.body().getData();

recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL));

recyclerView.setItemAnimator(new DefaultItemAnimator());//RecyclerView动画:默认动画

//使用适配器

recyclerView.setAdapter(new RecyclerViewAdapter(MainActivity.this,arrayList));

}

//失败

@Override

public void onFailure(Call call, Throwable t) {

Toast.makeText(MainActivity.this, “请求失败”, Toast.LENGTH_SHORT).show();

}

});

看一下完整的java代码

public class MainActivity extends AppCompatActivity {

private List<JavaBean.DataBean> arrayList;

private RecyclerView recyclerView;

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

文末

不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊

小编将自己6年以来的面试经验和学习笔记都整理成了一个**937页的PDF,**以及我学习进阶过程中看过的一些优质视频教程。

其实看到身边很多朋友抱怨自己的工资很低,包括笔者也是一样的,其原因是在面试过程中没有给面试官一个很好的答案。所以笔者会持续更新面试过程中遇到的问题,也希望大家和笔者一起进步,一起学习。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

*面试经验和学习笔记都整理成了一个937页的PDF,**以及我学习进阶过程中看过的一些优质视频教程。

[外链图片转存中…(img-0vr0sGca-1712417161989)]

其实看到身边很多朋友抱怨自己的工资很低,包括笔者也是一样的,其原因是在面试过程中没有给面试官一个很好的答案。所以笔者会持续更新面试过程中遇到的问题,也希望大家和笔者一起进步,一起学习。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值