美文网首页
RecyclerView基础知识

RecyclerView基础知识

作者: 撕裂的我 | 来源:发表于2017-09-13 23:54 被阅读0次

RecyclerView的前身就是ListView,为什么有了ListView还需要RecyclerView呢?因为ListView天生就有很大的缺陷。

ListView的缺陷

1.ListView的扩展性不好,只能实现纵向滚动,不支持横向滚动。
2.ListView的点击事件setOnItemClickListener()不能做到精确定位(例如ListView的item中还有一个按钮)。

RecyclerView的基本用法

  • 需要添加support库
  • 在布局中使用RecyclerView
    ps:因为RecyclerView不是内置在系统SDK当中,所以需要写出完整的包路径
  • 代码中找到RecyclerView,设置布局管理器,适配器、

布局管理器
RecyclerView提供了3种布局管理器1.LinearLayoutManager;2.GridLayoutManager;3.StaggeredGridLayoutManager。

1.LinearLayoutManager默认是纵向排列的,显示的item是从上到下的。如果想横向排列,及从左到右显示item需要设置方向。

LinearLayoutManager manager = new LinearLayoutManager(this);
manager.setOrientation(LinearLayoutManager.HORIZONTAL);

2.GridLayoutManager是网格布局,可以自己设置分为几列。
3.StaggeredGridLayoutManager是瀑布流布局,可以轻松的实现瀑布流的效果。我们也可以设置瀑布流的排列方式(横向,纵向)和行(列)数。
适配器
适配器需要基础RecyclerView.Adapter;必须要实现3个方法。
1.onCreateViewHolder();2.onBindViewHolder();getItemCount()。

1.onCreateViewHolder()用于创建ViewHolder实例(一般都是内部类,viewHolder要继承RecyclerView.ViewHolder),然后将这个ViewHolder实例返回。

2.onBindViewHolder()对RecyclerView的子项数据进行赋值,会在每个子项被滚动到屏幕内的时候执行。
3.getItemCount()告诉RecyclerView有多少子项,直接返回数据源的长度。

  • 点击事件
    RecyclerView并没有和ListView一样的setOnItemTouchListener(),所有的点击事件都要具体的View去注册(可通过ViewHolder获取到相应的View
    然后setOnClickListener()),这样就解决了开头提到ListView的点击问题。
    可以通过下面的代码获取到postion,然后通过postion做相关操作。
int position = holder.getAdapterPosition();

补充
ListView的布局排列是有自身去管理的,而RecyclerView将这个工作交给了LayoutManager,LayoutManager中制定了一套可以扩展的布局排列接口,子类只需要按照接口的规范来实现,就能定制出各种不同排列方式的布局。

参考文章:郭霖 《第一行代码》

相关文章

网友评论

      本文标题:RecyclerView基础知识

      本文链接:https://www.haomeiwen.com/subject/sjcrsxtx.html