Android控件之RecyclerView基本介绍

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

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

1.RecyclerView基本认识

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

Android控件之RecyclerView基本介绍_第1张图片

2.RecyclerView的一些常用类认识

  • RecyclerView.Adapter:适配器,提供数据给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的依赖

Android控件之RecyclerView基本介绍_第2张图片

 

 

 

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

第二步:布局中写




    


第三步:创建Adapter

 

public class MyRecyclerViewAdapter extends RecyclerView.Adapter {
    private List mDataList = new ArrayList<>();
    private Context mContext;
    public MyRecyclerViewAdapter(Context context, List 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);

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


 

 

 

 

 

 

 

 

你可能感兴趣的:(Android学习中的笔记)