RecyclerView基本用法

本文详细介绍RecyclerView的基本用法,包括在XML布局中引入RecyclerView、设置LayoutManager和适配器等步骤,并提供了一个完整的适配器实现案例。同时,文章还分享了一些在实际应用中可能遇到的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RecyclerView是Android5.0新特性,基本用法其实很简单,也没什么好说的,这里只是记录下让自己加深印象,先说一下我使用的工具:AndroidStudio3.0,接下来讲一下基本步骤

一、RecyclerView基本用法

1.首先需要在xml布局文件中使用RecyclerView,不过在3.0中貌似需要手动引入才能使用RecyclerView,手动引入其实最简单的方法就是在Module的grade文件中的dependencies{ }中加入一行代码:

implementation 'com.android.support:recyclerview-v7:26.1.0'

2.下来就是在你的Activity中findViewById找到你的控件,然后从这才算是RecyclerView真正开始使用了,第一步也是最容易忘记的一步:为你的RecyclerView设置LayoutManager(这里LayoutManager有多种样式,例如垂直,水平,网格,瀑布流)

LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
mRecyclerView.setLayoutManager(layoutManager);

3.给RecyclerView设置适配器,mList是使用for循环模拟添加的String数据

mRecyclerView.setAdapter(new MyAdapter(MainActivity.this, mList));

二、适配器

当然最重要的也就是适配器该如何写的问题了,这里直接给出完整代码:

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.List;

/**
 * @author xiaochao
 * @description RecyclerView适配器
 * @time 2017/12/23 10:46
 */
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

    //1.我们首先在MyAdapter中编写一个内部类MyViewHolder继承自RecyclerView.ViewHolder
    class MyViewHolder extends RecyclerView.ViewHolder {
        private TextView tv;

        public MyViewHolder(View itemView) {
            super(itemView);
            tv = itemView.findViewById(R.id.tv);//此id为item布局中TextView的id
        }
    }

    //2.让MyAdapter继承RecyclerView.Adapter<MyAdapter.MyViewHolder>,注意<>中是我们自定义的ViewHolder

    private List<String> mList;
    private Context mContext;

    //3.通过构造函数传入数据与Context
    public MyAdapter(Context context, List<String> stringList) {
        mContext = context;
        mList = stringList;
    }

    /**
     * 加载条目布局
     *
     * @param parent
     * @param viewType 可以根据这个值加载不同的布局
     * @return RecyclerView中的每一个itemView
     */
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_recyclerview, parent, false);
        MyViewHolder viewHolder = new MyViewHolder(itemView);
        return viewHolder;
    }

    /**
     * 将视图与数据进行绑定
     *
     * @param holder   可以将其看成itemView,onCreateViewHolder方法中返回的就是MyViewHolder
     * @param position
     */
    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        holder.tv.setText(mList.get(position));
    }

    /**
     * @return 要显示多少个item
     */
    @Override
    public int ==getItemCount==() {
        return mList.size();
    }

}

三、RecyclerView踩坑

虽然说就上面的写法再基础不过了,但是还是有可能遇到坑的,我就亲身经历过。就是上面那几个基本步骤,代码也完全没有发现问题,但是在运行的时候却出错了。错误信息之前截的图片被删除了,也不想去复现了,大家在实际过程中不一定会遇到,如果遇到问题了,可以先看看是不是这个问题:RecyclerView的版本与自己Activity继承的AppCompatActivity版本不一致,将两个版本改成一致就可以了,这也算是其中的一个小坑吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值