1.为什么用 RecyclerView 而不用listview
有三种布局管理器,
- LinerLayoutManager 以垂直或者水平列表方式展示Item
- GridLayoutManager 以网格方式展示Item
- StaggeredGridLayoutManager 以瀑布流方式展示Item
RecyclerView既可以实现横着的列表也可以实现纵着的列表,还可以实现瀑布流的效果
2.和listview有什么区别
[脑图链接](http://naotu.baidu.com/file/b13cb677b705a164685cf3eafb365e75?token=7c6f8b3c45ce96fd
)
1.劣势
1.item点击事件
在viewhoder里添加点击事件
2.设置header
设置的原理就是根据返回view的不同类型来增加header或footer
第一种方式:数据适配的adpter不变,在外面套上一层包含设置header的对象。当给列表设置适配器时,使用外面包装的adpter。
github地址如下
第二种方法:
3.不能设定固定的滚动位置
2.优势
自定义item动画
在添加或删除了数据后,RecyclerView 还提供了一个默认的动画效果,来改变显示。
DefaultItemAnimator 或直接继承这个类,实现自己的动画效果,并调用recyclerview.setItemAnimator(new DefaultItemAnimator());
局部刷新
notifyItemInserted(index);
notifyItemRemoved(position)
notifyItemChanged(position)
3.如何使用
1.设置布局管理器
RecyclerView recyclerView =(RecyclerView) getView().findViewById(R.id.recycle_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
//第二种方式
recyclerview.setLayoutManager(new LinearLayoutManager(
this, LinearLayoutManager.VERTICAL, false));
RecyclerView实现瀑布流
recycler.setLayoutManager(new StaggeredGridLayoutManager(2, VERTICAL))
其中 StaggeredGridLayoutManager 第一个参数表示列数,就好像 GridView 的列数一样,第二个参数表示方向,可以很方便的实现横向滚动或者纵向滚动。
2.设置adpter
4.界面item复用原理
1.recyclecew有两级缓存,缓存的内容与listview不同,是hoder。不在界面显示的view会移动到cache结构里。cache结构里的数据会移动到一个pool里。
2.一个应用不同的recycleview会共享pool里的hoder,这也是为什么recycleview的hoder都有一个共同的父类。
3.默认cache有2对象。pool里5个对象。
5.列表的分页
==========