DiffUtils.dispatchUpdatesTo(adapter)
recyclerView
の配列のサイズを更新していません
私のresult
のサイズは現在のitemList
よりも大きいですが、現在のサイズしか表示されません
配列のサイズの変化をDiffUtils
で表示するにはどうすればよいですか? notifyDatasetChanged()
の使用は正しくないと思います。
これが私が今アダプターでこれを行う方法です:
fun update(items: List<ITEM>) {
updateAdapterWithDiffResult(calculateDiff(items))
}
private fun updateAdapterWithDiffResult(result: DiffUtil.DiffResult) {
result.dispatchUpdatesTo(this)
}
private fun calculateDiff(newItems: List<ITEM>) =
DiffUtil.calculateDiff(DiffUtilCallback(itemList, newItems))
itemListに新しいアイテムを追加していないため、リストサイズは更新されていません。
このようにコードを更新します-
class YourAdapter(
private val itemList: MutableList<ITEM>
) : RecyclerView.Adapter<YourAdapter.ViewHolder>() {
.
.
.
fun updateList(newList: MutableList<ITEM>) {
val diffResult = DiffUtil.calculateDiff(
DiffUtilCallback(this.itemList, newList))
itemList.clear()
itemList.addAll(newList)
diffResult.dispatchUpdatesTo(this)
}
}
それがあなたのために働くことを願っています。