RecyclerView обновляет элементы только при прокрутке - PullRequest
0 голосов
/ 22 сентября 2019

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

Использование smoothScrollToPosition () - это обходной путь, и я хочу узнать причину этой проблемы и устранить ее.

Этодействительно странно, потому что, когда я открываю свой фрагмент и имею пару изображений в представлении рециркулятора, которое я добавил ранее, удаление элементов работает отлично, но когда я добавляю новое изображение из намерения камеры, даже уведомление об удалении перестает работать, я должен сделатьпрокрутите, чтобы обновить элементы в адаптере.

Это часть, где я устанавливаю данные:

viewModel.photos.observe(viewLifecycleOwner, Observer {
    list->adapter.data = list
}).

Конечно, данные задаются в OnUiThread:

Я проверял с помощьюэлементы отладчика-- в списке обновлены.

Кто-нибудь знает причину этой проблемы?

1 Ответ

1 голос
/ 22 сентября 2019

Вы должны сообщить recyclerView.adapter, что именно изменилось, вызвав notifyItemChanged .Есть также другие методы для вставленных элементов, перемещенных элементов, удаленных элементов и т. Д. Вы можете посмотреть полную документацию здесь :

Существует также другой способ реализации DiffUtil.Вы можете узнать об этом больше.Но разница в том, что при использовании DiffUtil вам не придется вручную вызывать эти методы уведомления.

Кроме того, старый / неоптимизированный / нерекомендованный способ сделать это - просто позвонить notifyDataSetChanged () .

PS Я очень думаю, что вы нашли такой же ответ, покапоиск в Интернете и, возможно, думал, что это просто "обходной путь".Я здесь, чтобы сказать вам, что это то, как это должно быть обработано.

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