RecyclerView庫中的遺珠

原來文章寫得很不錯,收藏了,感謝原作者的創作。

關於 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 ,再次致謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章