0
StaggeredGridLayoutManagerに基づいて2列のRecyclerViewがあります。RecylerView StaggeredGridLayotManagerを使用してdiffUtilの変更後に2つの要素にジャンプ
1項目の内容を変更してdiffUtilをトリガすると、RecyclerViewは2項目にジャンプしています。しかしスクロールすると、1要素と空白が見えるようになり、スクロールアイテムは自然な順序に変換されます。また、diffリスト内のアイテムの量も同じです。
この厄介な動作を回避し、diffUtil中にスクロール位置を維持するにはどうすればよいですか?
val layoutManager = StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)
recyclerView.layoutManager = layoutManager
recyclerView.itemAnimator = null
recyclerView.setHasFixedSize(true)
recyclerView.setItemViewCacheSize(if (App.isTablet()) 3 else 2)
public void diffUpdate(List<T> newList) {
if (getCollection().size() == 0) {
addAll(newList);
notifyDataSetChanged();
} else {
DiffCallback diffCallback = new DiffCallback<T>(getCollection(), newList);
DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
clear();
addAll(newList);
diffResult.dispatchUpdatesTo(this);
}
}