RecylclerView入门初步
RecyclerView可以看作是ListView的进化版本,当然RecyclerView并不是继承ListView的,RecyclerView直接继承于ViewGroup父类。RecyclerView的灵活性与可替代性比listview更好,我们可以很方便的使用它完成ListView比较难完成的效果。
现在,我们开始学习如何使用它:
- 添加依赖
|
|
- 在xml中配置
|
|
- Acitvity中使用
|
|
可以看到,RecyclerView并不像ListView那样只要设个adpter就完成了,它有很多自己可自定义的功能,可以很方便的完成很多效果。
比如: mRecyclerView.setLayoutManager(mLayoutManager); 就给了程序员很大的发挥空间,因为有了布局管理,我们可以很方便的设置为
LinearLayoutManager 线性布局同时支持横向、纵向
GridLayoutManager时 为网格布局管理器
StaggeredGridLayoutManager 瀑布式布局管理器
- 适配器编写
RecycleView是对ListView以及GridView的升级,在使用的时候同源更新需要使用Adapter适配器。但是RecycleView使用的适配器并不是之前的BaseAdapter了。RecycleView使用的适配器需要继承RecyclerView.Adapter\
我们将适配器的编写流程分为:
1.继承 RecyclerView.Adapter
2.完成内部类 ViewHolder 这个 ViewHolder不再是以前的BaseAdapter时我们写的ViewHolder,而是需要继承RecyclerView.ViewHolder抽象类的ViewHolder
3.编写构造方法
4.onBindViewHolder中进行每个item的操作
5.若需要监听点击事件,我们需要定义回调接口,并在第四步进行item的view操作时,添加监听事件回掉该接口
以下便是我的RecyclerViewAdapter代码
|
|
- 初步运行
发现可以运行,类似于简单的listview(当然,item的xml配置代码被我省略了)
添加监听事件
我选择在长按item时删除该item,删除动画在由该行设置
|
|
|
|
- 遇坑
完成该功能后,测试发现,删除会出现问题,动画是有了,但是下标会乱,导致删除错误item、
因此便有了该行代码。
因为删除某一项时调用notifyItemRemoved后,显示的item是不会调用onBind方法的,所以position并没有被刷新。这时候得到的position值就是错误的。我们需要手动使adapter给后面的item重新onBind
|
|
至此,RecyclerView的便正常工作了。
总结
本文只是RecyclerView的一些基本使用,有很多强大的功能还未能接触,本文也比较初步,仅作入门引导。