目录

一、作用

二、实现步骤

1.编写子项布局

2.添加循环视图控件,获取对象

3.编写适配器

1.适配器要继承RecyclerView.Adapter指定范型

2.编写内部类 MyViewHolder 继承 RecyclerViewViewHolder。内部需要编写构造方法来给视图持有者加载控件并且可以获取视图对象

3.构造方法传入上下文和数据源

4.重写三大方法

4编写数据传入数据源

5编写布局管理器

1线性布局管理器

2网格布局管理器

3瀑布流布局管理器

6设置布局

7设置适配器


一、作用

按照列表,网格,瀑布流的方式展示数据​​​​​​​

二、实现步骤

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);

希望我做自己生命的主角,而不是别人生命中的看客。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐