169 похожих чатов

Господа, у меня в recyclerView когда на айтеме щелкаю суитчбаттон,

в объекте койче меняется, и из-за этого ЛивДата обновляется и экран возвращается в начало всего ресайкла. Как это вылечить? чтобы экран оставался там где был?

21 ответов

4 просмотра

Вы адаптер перезаписываете в обзервере?

Lessej- Автор вопроса

viewModel.getLearnedWords().observe(this, learnedWords -> adapter.submitList(learnedWords)); adapter = new ArchiveAdapter(new ArchiveAdapter.ArchiveDiff(), this);

Вы когда адаптер перезаписываете у вас все сбрасывается Вам нужно обновить список в адаптере и вызвать один из методов notify... в зависимости от ваших нужд

Lessej- Автор вопроса

А обзервер тогда этот отключить надо?

Зачем? Сделайте проверку что если у вас адаптера нет - создать его Если он есть - вызвать ему какой-нибудь updateItems

Lessej- Автор вопроса

хмм

Обновляй не целиком список объектов, а конкретный элемент.

Lessej- Автор вопроса

А проверку эту в обзервере делать?

К примеру, это может быть нечто вроде DTO с observable-полями, а сама view — не просто верстка, а layout с соответствующим байдингом. Таким образом у тебя будет меняться единственный элемент и изменения в данных не будут затрагивать список или порядок элементов в нем в самом recycler.

Ну вы же данные из него берёте?)

Lessej- Автор вопроса

данные? из базы

Room?

Lessej- Автор вопроса

да

В общем, да В обзервере

Любой вызов notifyDataSetChanged() вызовет перерисовку

Всего списка. А перерисовать нужно лишь вьюху конкретного элемента

До этого нужно обновить список его слов) И не факт что ему нужно обновлять весь список

Ресайклер не запоминает набор данных, он рисует постфактум

А я говорил что он его запоминает?)

Lessej- Автор вопроса

действительно а разве любой нотифай не перезагрузит также весь ресайкл?🤔

Notify all только

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
я имею в виду официально интегрированный в телегу? в том плане что не сливает переписку с пользователем?
Andrey
9
Кто-нибудь решал проблему с автоматическим скроллингом к выбранной ячейке в TDBGrid в Lazarus? Проблема в том, что есть допустим 3 столбца, третий столбец виден наполовину, вк...
Дмитрий Логинов
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Чорт! Чорт! Чорт! Стала ставить через GetIt (написано же, что ручками не рекомендуется) Сломалось на дублировании моей TSkLabel. Чтож мне ее по всем проектам переименовывать в...
Катерина Свиридова
7
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Карта сайта