Android控件之RecyclerView基本介绍

本文介绍了Android控件RecyclerView的基本概念,它作为ListView的替代品,提供了更强大的功能和更高的灵活性。通过学习RecyclerView.Adapter、RecyclerView.ItemAnimator、RecyclerView.ItemDecoration等关键类,以及如何在项目中添加依赖、创建Adapter和在布局中使用,读者将能够实现一个基本的RecyclerView实例。

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

(这篇文章很早就写好了,却不知道为何一直被放在草稿箱里......今天发现就重新发下。)

RecyclerView推出来已经很久了,许多项目中也早已用它代替了之前的ListView。今天就来简单介绍下这个新朋友。

1.RecyclerView基本认识

RecyclerView是Android5.0发布的时候推出的一个全新控件,可以支持API 7以上的版本。展示的效果类似于ListView,是列表形式。继承关系如下(图截至官网)。RecyclerView提供了一种插拔式的体验,高度解耦、灵活和高效。使用LayoutManger、ItemDecoration、ItemAnimator可以实现很多复杂的效果。如此功能强大的控件,自然也带来了一些使用中的难度。如列表的分割线不再如listview中可以直接设置属性而是需要自定义,还有RecyclerView中的Item的点击事件也需要自己实现。

2.RecyclerView的一些常用类认识

  • RecyclerView.Adapter<VH extends RecyclerView.ViewHolder>:适配器,提供数据给RecyclerView,我们使用时需要继承它
  • RecyclerView.ItemAnimator:增加或减少item时候的动画
  • RecyclerView.ItemDecoration:RecyclerView没有提供分割线,需要我们去继承该类实现
  • RecyclerView.LayoutManager:布局管理,RecyclerView需要使用它来控制item是LinearLayout还是GridLayout还是StaggeredGridLayoutManager。(这正是它与ListView不一样的一个地方)
  • RecyclerView.LayoutParams:布局参数
  • RecyclerView.SmoothScroller:用于滚动
  • RecyclerView.ViewHolder:与ListView中的作用一样,用来放置我们的元数据

3.基本使用

介绍完RecyclerVeiw中相关的常用类以后,下面一步步来实现一个RecyclerView来先体验一下。

第一步:项目中添加RecyclerView的依赖

 

 

 

(如果不知道最新的版本是多少可以去File->Project Structure,选择app->Dependencies,右侧绿色“+”号,选择Library dependency,搜索框中输入recyclerview即可添加最新的版本)

第二步:布局中写<android.support.v7.widget.RecyclerView/>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

第三步:创建Adapter

 

public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {
    private List<String> mDataList = new ArrayList<>();
    private Context mContext;
    public MyRecyclerViewAdapter(Context context, List<String> dataList){
        this.mContext = context;
        this.mDataList = dataList;
    }
    /**
     * 获取布局
     * @param parent
     * @param viewType
     * @return
     */
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_one,parent,false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    /**
     * 绑定数据
     * @param holder
     * @param position
     */
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.textView.setText(mDataList.get(position));
    }

    /**
     * 返回数据数量
     * @return
     */
    @Override
    public int getItemCount() {
        return mDataList.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder{
        private TextView textView;
        public ViewHolder(View itemView) {
            super(itemView);
            textView = (TextView) itemView.findViewById(R.id.tv_item_content);
        }
    }
}


我们的RecyclerView的Adapter必须继承RecyclerView.Adapter

第四步:Activity中获取RecyclerView

        mRecyclerView = (RecyclerView)view.findViewById(R.id.recycler_view);
        mLayoutManager = new LinearLayoutManager(getActivity());
        mRecyclerView.setLayoutManager(mLayoutManager);

        mAdapter = new MyRecyclerViewAdapter(getActivity(),mDataList);
        mRecyclerView.setAdapter(mAdapter);

第五步:运行程序,效果如下。


 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值