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

Товарищи, вот как бы вы подсказали новичку решить следующий вопрос:


Во фрагменте с рециклервью идет подписка на изменения в LiveData списке.
При изменении данных, обновленный список передается в адаптер:

mViewModel = ViewModelProvider(this).get(MainFragmentViewModel::class.java)
mViewModel.myData.observe(viewLifecycleOwner, {
it?.let { adapter.setMyData(it) }
})

Все бы хорошо, но событие ожидаемо возникает, даже когда данные не меняются (при пересоздании фрагмента, например, происходит поворот экрана и т.п.) При этом в адаптере каждый раз происходят заново довольно долгие вычисления всяких сложных итогов, которые не хранятся в базе и не приходят через LiveData.
Вопрос: где правильнее такие итоги вычислять и хранить, во вьюмодели, в репозитории, когда обновлять или есть еще какие идеи?

8 ответов

13 просмотров
Pavel-Vasilev Автор вопроса

в том то и дело что данных нет, но они есть во вьюмодели и репозиотрии, но в последних нет сложных итогов, они вычисляются в адаптере даже когда сами данные не поменялись.

Pavel-Vasilev Автор вопроса
Ilya
нельзя ничего в адаптере вычислять

Но подписка на изменение есть только во фрагменте, и непонятно как организовать схему так, чтобы итоги вычислялись только при изменении данных, а не при поворотах экрана.

Pavel Vasilev
в том то и дело что данных нет, но они есть во вью...

что за сложные итоги? говори на нашем языке : кодерском

Pavel Vasilev
Но подписка на изменение есть только во фрагменте,...

Приехали данные Вычислили Отдали в адаптер Профит! Зачем упорно делать вычисления в адаптере, если они тормозят всё что можно?

Pavel-Vasilev Автор вопроса

А как через ливдату отловить момент когда данные поменялись, если она заточена под жизенный цикл фрагмента?

Pavel Vasilev
А как через ливдату отловить момент когда данные п...

Через лайвдату ничего специально не отлавливают. Это канал передачи уведомлений. Есть новые данные - лайвдата сработала. Всё.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта