一、简介:
- RecyclerView 是 Android5.0 之后新出的控件。
RecyclerView 是 ListView 的增强版,不仅能实现 ListView 的效果,还优化了 ListView 的很多不足之处。
想对于 ListView 来说,官方更推荐使用 RecyclerView
二、使用 RecyclerView
- 演示思路:布局 RecyclerView ,CardView 充当其 Item !
2.1 app 的 build.gradle 中添加依赖
|
|
2.2 主页面布局文件
|
|
2.3 Actiity 和 Adapter 的代码
|
|
注意: RecyclerView 的三种 manager ,分别为 线性、宫格、瀑布流样式。
2.4 RecyclerView 的 item 的样式为:
|
|
2.5 运行结果如下:
- LinearLayoutManager manager = new LinearLayoutManager(this); 结果:
- GridLayoutManager manager = new GridLayoutManager(getApplicationContext(),2);结果如下:
- StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2, OrientationHelper.HORIZONTAL);结果如下:
三、RecyclerView 添加条目点击事件
3.1 RecyclerView 并没有对外暴露的具体的单击或长按监听事件,需要我们自己来处理单击或长按事件,如下所示:
|
|
这种需要自己增加单击或长按事件的逻辑,然后利用接口回调出去。
Android 给我们提供了一个手势监测帮助类 GestureDetector ,我们可以借助这个类来处理不同的手势,我们重新建个类实现 RecyclerView.OnItemTouchListener 接口。代码如下:
|
|
- 代码中只实现了,单击和长按事件的回调,更多的事件操作方法可以参考 GestureDetector 类。
3.2 另一种方式是在 Adapter 的 onBindViewHolder 方法中,利用 View 本身的监听事件,来设置回调监听,代码如下:
|
|
3.3 两种添加点击事件比较
第一种方式更加灵活,解耦性更高,第二种因为设置在 Adapter 内,只能用作特定的 RecyclerView
第二种相对第一种来说,更加简便,实现起来也方便,也比较好理解。
第一种还能用于更加复杂的手势监听,我们可以利用 GestureDetector 类来实现更加复杂的事件监听回调,而第二种监听的事件比较有限。