Добавьте перетаскивание в RecyclerView с помощью DiffUtilAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Добавьте перетаскивание в RecyclerView с помощью DiffUtil

Сообщение Anonymous »

У меня есть список, который обновляется из базы данных номеров. Я получаю обновленные данные из Room в виде нового списка, а затем передаю их в submitList ListAdapter, чтобы получить анимацию для изменений.

Код: Выделить всё

list.observe(viewLifecycleOwner, { updatedList ->
listAdapter.submitList(updatedList)
})
Теперь я хочу добавить функцию перетаскивания для того же RecyclerView. Я попытался реализовать это с помощью ItemTouchHelper. Однако notifyItemMoved() не работает, поскольку ListAdapter обновляет свое содержимое через submitList().

Код: Выделить всё

override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {

val from = viewHolder.bindingAdapterPosition
val to = target.bindingAdapterPosition

val list = itemListAdapter.currentList.toMutableList()
Collections.swap(list, from, to)

// does not work for ListAdapter
// itemListAdapter.notifyItemMoved(from, to)

itemListAdapter.submitList(list)

return false
}
Теперь перетаскивание работает нормально, но только при медленном перетаскивании, когда перетаскивание становится достаточно быстрым, я получаю разные и противоречивые результаты.
< img alt="Запись экрана" src="https://i.sstatic.net/UftHG.gif" />
В чем может быть причина? Как лучше всего реализовать функцию перетаскивания для моего RecyclerView, который использует ListAdapter?

Подробнее здесь: https://stackoverflow.com/questions/684 ... h-diffutil
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Использование Recyclerview с Diffutil.ItemCallback не прокручивается вверх?
    Anonymous » » в форуме Android
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Kotlin RecyclerView в RecyclerView после обновления представление переходит в дочерний RecyclerView
    Anonymous » » в форуме Android
    0 Ответы
    80 Просмотры
    Последнее сообщение Anonymous
  • Изменить выбранный цвет фона карты с помощью DiffUtil
    Anonymous » » в форуме Android
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Обратный вызов DiffUtil для списка разного размера
    Anonymous » » в форуме Android
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • CdkDrag свободное перетаскивание не работает внутри cdkDropList с использованием Angular, перетаскивание материала Angul
    Гость » » в форуме Javascript
    0 Ответы
    121 Просмотры
    Последнее сообщение Гость

Вернуться в «Android»