研究了一下午RecyclerView的Adapter写法。网上看了很多教程好坑,到处都是用自己定义的类看的我云里雾里。。现在总算搞明白了,RecyclerView的比较基础的入门用法。。
下面给跟我一样刚接触的同学写一下我学写Adapter时候做的详尽笔记,希望能帮到看到这篇文章的、和我几个小时前一样还在纠结的菜鸟们。
RecycleView的用法主要分三个部分:
1.在你的布局里创建一个RecyclerView,然后创建一个需要在RecyclerView内循环填充的布局
2.写RecyclerView的Adapter
3.在需要调用RecyclerView的Activity中配置RecyclerView
1.省略
2.RecyclerView的Adapter写法(代码中的注释已经把我所了解的思路详尽的介绍清楚了)
//0.继承父类
public class SettingsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
//1.对各种需要传入的数据进行声明
private SharedPreferences[] settings;
//2.构造方法,作为适配器接收参数的入口
public SettingsAdapter(SharedPreferences[] sharedPreferences/*根据需要更改*/) {
this.settings = sharedPreferences;
}
//3.viewholder的内部类,用于构建viewholder和其要填充的item中的元素的对象,并且将对象和其中的元素绑定
//总结:将布局的规则用代码实例化为对象,将布局中的元素用代码实例化为对象的属性,方便onBindViewHolder方法进行写入
class MyViewHolder extends RecyclerView.ViewHolder {
public TextView textViewSetting;/*根据需要更改*///初始化细分布局中的元素
public MyViewHolder(View itemView) {
super(itemView);//这里的itemView指的是细分布局,即需要进行重复构建的布局
textViewSetting = (TextView) itemView.findViewById(R.id.shezhixiang);
/*根据需要更改*///布局中的TextView需要填写
}
}
//4.默认需要实现的方法,负责为Item创建视图容器,并且返回一个该容器的实例传给onBindViewHolder方法
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//以下一步:负责实例化待逐条填充的layout,将其转换为view
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout
.list_settings, parent, false);
//以下一步:负责实例化传入的带填充的view的容器
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
//5.默认需要实现的方法,负责将数据写入在Item布局的元素里
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
/*针对不同的元素写入数据,根据需要更改*/
MyViewHolder myViewHolder = (MyViewHolder) holder;
}
//6.告诉适配器一共有多少条数据需要填充
@Override
public int getItemCount() {
return settings.length;
}
}
3.为每个RecyclerView创建一个LinerLayoutManager:
LinearLayoutManager linearLayoutManager1 = new LinearLayoutManager(this);
将管理器与RecyclerView绑定:
recyclerView_changgui.setLayoutManager(linearLayoutManager1);
为RecyclerView绑定适配器:
recyclerView_changgui.setAdapter(new SettingsAdapter(this, new String[4]));
网友评论