布局效果不同
- ListView的布局单一,只有一个纵向效果。
- RecyclerView的布局效果丰富,可以在LayoutMananger中设置线性布局(纵向、横向)、表格布局、瀑布流布局。
- 在RecyclerView中,如果存在的LayoutMananger不能满足需求,可以在LayoutMananger的API中自定义Layout:例如scrollToPosition(),setOrientation()等等。
空数据处理
在lisrView中有个setEmptyView()用来处理Adapter中数据为空的情况。但是在RecyclerView中没有这个api,所以在RecyclerView中需要进行一些数据判断来实现数据为空的情况。
局部刷新
- 在listView中通常刷新数据是用notifyDataSetChanged(),这种刷新数据是全局刷新(每个item的数据都会重现加载一遍)。
- RecyclerView支持局部刷新,例如:notifyitemChanged();
- 如果想在listview中实现局部刷新,我们可以在Adapter中,实现一个onitemChanged方法,在方法中获取到这个item的position(可以通过getFirstVisiblePosition()),然后调用getView()方法在刷新这个item的数据。
动画效果
1.在RecyclerView有自己的动画效果,如:notifyItemChanged(), notifyDataInserted(), notifyItemMoved()等等;如果我们需要用自己的动画,RecyclerView也提供了RecyclerView.ItemAnimator类。
2.listView没有实现动画也没有提供api,不过我们可以自己在Adapter中实现。
只是部分,还有一些没记笔记。