有时我会替换ArrayList数据源中的所有数据,如下所示:
private ArrayList data;
public void replaceAll(ArrayList newItems) {
this.data.clear();
for (int i = 0; i < newItems.size(); i++) {
this.data.set(i, newItems.get(i));
}
notifyDataSetChanged();
}
但如果举个例子
this.data.size() == 50;
和
newItems.size() == 30;
notifyDataSetChanged()
我的RecyclerView滚动到下一个孩子。
这个
仅限
我试过跑步:
int childCntWeLostAfterMutation = data.size() - newData.size();
notifyItemRangeChanged(0, newData.size());
notifyItemRangeRemoved(newData.size(), childCntWeLostAfterMutation);
但是事情变得更糟了。它向后滚动了很长一段时间,完全弄乱了可见的位置。
请不要告诉我
smoothScrollToPosition
我已经在用了
setHasStableIds(true)
还有我的
public long getItemId(int position)
请帮帮我!