安卓UI之RecyclerView(循环视图)学习笔记
学习安卓UI中RecyclerView的有关内容,记录下学习笔记,根据我这篇博客,可以引导新手一步步的实现循环视图,有基础的可以作为笔记复习,我在写这篇博客,有一些很基础的东西省略掉了没写,没基础的需要弄懂,得多去看书,看博客。
·
目录
1.适配器要继承RecyclerView.Adapter指定范型
2.编写内部类 MyViewHolder 继承 RecyclerViewViewHolder。内部需要编写构造方法来给视图持有者加载控件并且可以获取视图对象
一、作用
按照列表,网格,瀑布流的方式展示数据
二、实现步骤
1.编写子项布局
2.添加循环视图控件,获取对象
3.编写适配器
1.适配器要继承RecyclerView.Adapter指定范型<MyAdapter.MyViewHolder>
2.编写内部类 MyViewHolder 继承 RecyclerViewViewHolder。内部需要编写构造方法来给视图持有者加载控件并且可以获取视图对象
3.构造方法传入上下文和数据源
4.重写三大方法
- getItemCount 指定列表项个数
- onCreateViewHolder 给视图持有者加载子项布局并返回
- onBindVIewHolder 给子项布局添加数据和事件
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
Context myContext;
List<String> dates;
//获取上下文和数据源给成员变量赋值
public MyAdapter(Context myContext,List<String> dates) {
this.myContext = myContext;
this.dates = dates;
}
@NonNull
@Override
public MyAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View myView= LayoutInflater.from(myContext).inflate(R.layout.item,parent,false);//给viewGroup加载子项布局,返回view对象
MyAdapter.MyViewHolder myViewHolder = new MyViewHolder(myView);//构造布局持有者
return myViewHolder;
}
//当列表项滚动到屏幕中间时调用
@Override
public void onBindViewHolder(@NonNull MyAdapter.MyViewHolder holder, @SuppressLint("RecyclerView") int position) {
holder.textView.setText(dates.get(position));//给子项布局的控件添加数据
holder.textView.setOnClickListener(new View.OnClickListener() {//添加点击事件
@Override
public void onClick(View view) {
Toast.makeText(myContext,dates.get(position),Toast.LENGTH_SHORT).show();
}
});
}
//指定列表项个数
@Override
public int getItemCount() {
return dates.size();
}
//获取item中具体对象
public class MyViewHolder extends RecyclerView.ViewHolder{
View myView;
TextView textView;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
myView = itemView;
textView = (TextView) itemView.findViewById(R.id.text);
}
}
}
4编写数据传入数据源
5编写布局管理器
1线性布局管理器
LinearLayoutManager myLinearLayoutManager = new LinearLayoutManager(this);//获取对象
myLinearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);//设置展示方向
2网格布局管理器
GridLayoutManager myGridLayoutManager = new GridLayoutManager(this,3);//获取对象,设置列数
3瀑布流布局管理器
StaggeredGridLayoutManager myStaggeredGridLayoutManager = new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);//设置列数与展示方向
6设置布局
myRecyclerView.setLayoutManager(myStaggeredGridLayoutManager);
7设置适配器
myRecyclerView.setAdapter(myAdapter);
希望我做自己生命的主角,而不是别人生命中的看客。
更多推荐
已为社区贡献5条内容
所有评论(0)