1. 如果可以, 请设置setHasFixedSize(true)
当你的列表数据数量不变时, 请设置这个属性 . 设置之后当有数据更新时, 列表不会整体刷新, 而只会更新具体的子view.
2. 在onCreateViewHolder(…)中设置onclick listener.
不论何时用户点击元素时, 通过vh.getAdapterPosition() 可以获得当前所在的位置, 因此也就可以把点击事件和具体数据对应起来.
记得不要忘记检查返回的位置是否可用就行了 if(pos != NO_POSITION) {}
3. 当存在多个ViewType时, 使用布局id来作为viewType.
大胆用吧, 这是官方鼓励的.
图片.png
4. 使用DiffUtil 来判断哪些元素变化了.
notifyDataSetChanged是一个耗时的操作, 要尽量少用.
DiffUtil最棒的一点是可以只更新某个条目上的某个字段, 而不需要刷新整个元素. 具体的使用方法, 请参考https://medium.com/@iammert/using-diffutil-in-android-recyclerview-bdca8e4fbb00
网友评论