2015-07-20 43 views
1

我使用RecyclerViewSortedList。 SortedListAdapterCallback包裝爲SortedList.BatchedCallbackRecyclerView與SortedList沒有排序

這是在適配器的構造函數的相關代碼:

mCallback = new SortedList.BatchedCallback<>(new AdapterPrivateEventsCallback(this)); 
mList = new SortedList<>(DataEntity.class, mCallback); 

數據來自後端和頁面加載。對於頁面中的每個項目,我呼叫mList.add(item),並在每個頁面的末尾呼叫mCallback.dispatchLastEvent()

我現在的問題是,RecyclerView顯示無序列表。

如果我上下滾動比訂購物品。

如果我使用沒有SortedList.BatchedCallback的SortedListAdapterCallback,那麼這些項目也是有序的。

爲什麼在加載後顯示RecyclerView是一個無序列表,如果我使用SortedList.BatchedCallback?

回答

0

當調用onBindViewHolder(ViewHolder holder, int position)時,RecyclerView只更新任何視圖。因此,即使您的mList獲得排序,它也不會反映在RecyclerView上,除非您進行滾出和滾入。

如果您想手動更新RecyclerView,則每次更改數據集時(在每次調用回調的情況下),都可以在適配器中使用notifyDataSetChanged()。當這稱爲RecyclerView刷新,你應該得到你的排序列表。