DiffUtils не отображает новые элементы - PullRequest
0 голосов
/ 05 июля 2018

DiffUtils.dispatchUpdatesTo(adapter) не обновляет размер моего массива в recyclerView

my 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))

1 Ответ

0 голосов
/ 05 июля 2018

Ваш размер списка не обновляется, поскольку вы не добавляете новые элементы в свой 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)
    }
}

надеюсь, это сработает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...