Android RecyclerView 的使用详解

本文详细介绍了Android RecyclerView的使用,包括如何创建适配器、设置线性布局、网格布局和瀑布流布局,以及如何插入和删除数据。通过实例展示了RecyclerView的灵活性和高效数据展示能力。
摘要由CSDN通过智能技术生成

一、前言

可以这样说,RecyclerView 的问世,替代了 ListView 和 GridView。RecyclerView 异常的灵活可自定义并可重复利用的 Item高度的解耦,并且通过设置不同的 LayoutManager、ItemDecoration 和 ItemAnimator 可以实现令人瞠目的效果。

ItemDecoration 的相关讲解大家可以看 这篇文章

源码已经上传至 github,地址在文末中已经给出,可以先下载到本地运行起来,因为具体事例讲解的时候并没有把全部的代码贴出来。

二、与 RecyclerView 配合的类

  • LayoutManager:布局管理器,管理 RecyclerView 的展示样式,系统提供了列表、网格和瀑布流三种形式的布局管理器。
  • Adapter:适配器,用来处理视图与数据之间的关系。
  • ViewHolder:用来容纳 View 视图。

三、案例介绍

我们要实现的最终效果如下所示:

可以看到界面中有四个按钮,分别是添加数据、切换布局,插入一条数据和删除一条数据。当点击添加数据的时候,RecyclerView 就会以线性布局的方式展示出数据,当点击切换布局的时候,RecyclerView 会先切换成网格布局,然后再切换成瀑布流布局,当点击插入和删除数据的时候,RecyclerView 会根据默认的动画来执行,并且动态更新 ItemView 的 position。

案例

四、实现线性布局列表

4.1、引入 RecyclerView

要使用 RecyclerView,首先我们需要在 app 的 build.gradle 中引入 RecyclerView 库。

implementation 'androidx.recyclerview:recyclerview:1.1.0'

4.2、创建适配器

想要把数据展示在列表视图中,就需要通过适配器,所以我们这里创建 MyRecyclerViewAdapter 继承自 RecyclerView 的 Adapter,并实现其中的三个方法,这里我们以内部类的方式来实现 MyViewHolder,同样是继承自 RecyclerView 的 ViewHolder,具体代码如下所示:(源码文末给出)

public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.MyViewHolder> {
   

    private Context mContext;
    private List<String> dataSource;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
   
        this.onItemClickListener = onItemClickListener;
    }

    public MyRecyclerViewAdapter(Context mContext) {
   
        this.mContext = mContext;
        this.dataSource = new ArrayList<>();
    }

    public void setDataSource(List<String> dataSource) {
   
        this.dataSource = dataSource;
        notifyDataSetChanged();
    }

    /**
     * 创建并且返回 ViewHolder
     *
     * @param parent
     * @param viewType
     * @return
     */
    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
   
        return new MyViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_layout, parent, false));
    }

    /**
     * 通过 ViewHolder 来绑定数据
     *
     * @param holder
     * @param position
     */
    @Override
    public void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值