原来文章写得很不错,收藏了,感谢原作者的创作。
关于 RecyclerView
RecyclerView的强大无人不知,它封装了ViewHolder,便于我们回收复用;配合LayoutManager、ItemDecoration、ItemAnimator 便于你制定各种列表效果。当然可能还有一些“遗珠”你不太了解,今天就说说它们。
RecyclerView 遗珠
SortedList
顾名思义就是排序列表,它适用于列表有序且不重复的场景。并且SortedList会帮助你比较数据的差异,定向刷新数据。而不是简单粗暴的notifyDataSetChanged()。
参见原文地址 CSDN https://blog.csdn.net/qq_17766199/article/details/83147483 。
AsyncListUtil
AsyncListUtil 在 support-v7:23就存在了。它是异步加载数据的工具,它一般用于加载数据库数据,我们无需在UI线程上查询游标,同时它可以保持UI和缓存同步,并且始终只在内存中保留有限数量的数据。使用它可以获得更好的用户体验。
注意,这个类使用单个线程来加载数据,因此它适合从磁盘、数据库加载数据,不适用于从网络加载数据。
参见原文地址 CSDN https://blog.csdn.net/qq_17766199/article/details/83147483 。
AsyncListDiffer
虽然SortedList、AsyncListUtil很方便了,但是大多数的列表都无需我们排序和加载本地数据,大多是获取网络数据展示。这个时候就可以使用DiffUtil了。DiffUtil是support-v7:24.2.0中的新工具类,它用来比较新旧两个数据集,寻找最小变化量,定向刷新列表。关于DiffUtil的介绍很早之前在张旭童的【Android】RecyclerView的好伴侣:详解DiffUtil 博客中就有详细介绍,我这里就不赘述了。
不过DiffUtil的问题在于计算数据差异DiffUtil.calculateDiff(mDiffCallback)时是一个耗时操作,需要我们放到子线程去处理,最后在主线程刷新。为了方便这一操作,在support-v7:27.1.0又新增了一个DiffUtil的封装类,那就是AsyncListDiffer。
参见原文地址 CSDN https://blog.csdn.net/qq_17766199/article/details/83147483 。
SnapHelper
SnapHelper是support-v7:24.2.0新增的,用于控制RecyclerView滑动停止后Item的对齐方式。默认提供了两种对齐方式PagerSnapHelper 与 LinearSnapHelper。PagerSnapHelper 和ViewPage效果一样,一次滑动一页。LinearSnapHelper这是Item居中对齐。
参见原文地址 CSDN https://blog.csdn.net/qq_17766199/article/details/83147483 。
原文地址
原文地址 CSDN https://blog.csdn.net/qq_17766199/article/details/83147483 ,再次致谢。