我有一個簡單的實施RecyclerView
與onResponse
網絡調用方法中的適配器。如何刪除以前的所有RecyclerView
項目或刷新RecyclerView
?RecyclerVIew項在每個網絡調用後重疊
我已經使用adapter.notifyDataSetChanged();
和recyclerView.invalidate();
但他們都沒有工作。
我有一個簡單的實施RecyclerView
與onResponse
網絡調用方法中的適配器。如何刪除以前的所有RecyclerView
項目或刷新RecyclerView
?RecyclerVIew項在每個網絡調用後重疊
我已經使用adapter.notifyDataSetChanged();
和recyclerView.invalidate();
但他們都沒有工作。
創建適配器的新實例,然後調用recyclerview.setAdapter(newAdapter);
這將刪除舊的適配器和設置新的適配器與更新的項目。
如果你只是想更新當前適配器項目,然後創建您轉接器內的方法來做到這一點:
public void addItems(ArrayList<EventObject> eventList) {
this.eventList.addAll(eventList);
notifyDataSetChanged();
}
然後調用adapter.addItems(moreItems);
僅僅重置數據源並調用notifyDataSetChanged()而不是創建對象的新實例會不會更高效? –
是的,我把它放在我的編輯@NileshSingh中 – MichaelStoddart
我會建議你使用不同的方法
創建您的適配器一次,你OnResponse
方法之外。適配器內部,有一個方法來設置的項目,如:
public void setItems(ArrayList<MyObject> items){
this.items = items;
notifyDataSetChanged();
}
然後在您的onResponse
方法你可以叫adapter.setItems(items);
你需要調用notifyDataSetChanged之前清除列表()。
使用下面的代碼行
adapter.clearData();
不要忘了添加此方法
public void clearData() {
int size = this.myList.size();
this.myList.clear();
this.notifyItemRangeRemoved(0, size);
}
}
以下步驟將幫助您
Suggestion-
在添加新項目之前,您是否清除了數據列表? – SaNtoRiaN
一旦下一組數據通過onRespose回調來保存數據列表,然後調用adapter.notifyDataSetChanged()。 –