Size: a a a

Moxy – MVP библиотека под Android

2020 May 14

D

Dmitriy in Moxy – MVP библиотека под Android
open class FastAdapter<Item : GenericItem> : RecyclerView.Adapter<RecyclerView.ViewHolder>()
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
а вот это что за магия
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
MyFastAdapterDiffUtil[adapter.itemAdapter] = items
MyFastAdapterDiffUtil[adapter.itemAdapter] = result
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
@alaershov
По поводу странности ресайкла — ну по логике не странно, если:
1) зашли на фрагмент со списком — он пуст и в презентере лист пукнтов пуст
2) загрузили — items презентера заполнились, diff посчитался — ресайкл обновился на его основе. Мы дернули  ещё раз кш(или бэк) и получили снова items — но они такие же оказались. result посчитался, мы всё передали ресайклу — но т.к. ничего по пунктам не изменилось — ресайкл не обновил ничего — тут всё логично!
3) далее мы сходили на фрагмент и обратно и Moxy повторно присылает во вью items + result — НО адаптер стал новый же при возвращении и он пуст, а items + result пришли в метод "старые" — items то есть, но вот result расчитан от того, что в ресайкле есть пункты эти и ничего обновлять в нём не надо.
это и происходит — ничего не появляется.
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
Я насколько это вижу, что вы себе сами усложнили жизнь, и теперь думаете, как бы запилить костыль) Если идти дефолтным путём, и оставить подсчёт диффа View, а из презентера передавать только актуальное состояние (текущий список элементов), то такой проблемы бы вообще не возникло.
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
Алексей Ершов
MyFastAdapterDiffUtil[adapter.itemAdapter] = items
MyFastAdapterDiffUtil[adapter.itemAdapter] = result
это вот отсюда операторы:
https://github.com/mikepenz/FastAdapter/blob/develop/library-extensions-diff/src/main/java/com/mikepenz/fastadapter/diff/FastAdapterDiffUtil.kt

НО в этом классе — подсчет diff result и добавление items слито в один метод. И если ты хочешь считать результат и добавлять items отдельно — то так не выйдет, потому я для тестов, сделал копию где разделил эти методы и назвал пока MyFastAdapterDiffUtil
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
можно закостылить и дифф резалт передавать отдельным методом View с другой стратегией.
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
Алексей Ершов
Я насколько это вижу, что вы себе сами усложнили жизнь, и теперь думаете, как бы запилить костыль) Если идти дефолтным путём, и оставить подсчёт диффа View, а из презентера передавать только актуальное состояние (текущий список элементов), то такой проблемы бы вообще не возникло.
согласен, но разве норм на основном потоке считать дифф? (я только из этих соображений, это всё затеял))
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
конечно, лучше на фоновом потоке считать
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
Есть даже для этого стандартная реализация, на основе которой ListAdapter сделан.
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
Можно туда заглянуть, и почитать, как гугл рекомендует считать дифф в фоне.
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
я вот об этой штуке
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
Алексей Ершов
я вот об этой штуке
Спасибо за помощь, почитаю!
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
Удачи) Вообще уважающий себя адаптер должен поддерживать самостоятельный подсчёт диффа в фоне, чтобы вам об этом думать не приходилось. Может и фаст адаптер умеет как-то.
источник

P▽

Picty ▽ in Moxy – MVP библиотека под Android
Алексей Ершов
Удачи) Вообще уважающий себя адаптер должен поддерживать самостоятельный подсчёт диффа в фоне, чтобы вам об этом думать не приходилось. Может и фаст адаптер умеет как-то.
вот и я про это думал, но что-то у этой либы не нашел такого пока)
источник

AD

Aleksey D. in Moxy – MVP библиотека под Android
Picty ▽
вот и я про это думал, но что-то у этой либы не нашел такого пока)
самое время посмотреть в сторону AdapterDelegates от Hannes Dorfman
источник
2020 May 17

S

Singular in Moxy – MVP библиотека под Android
источник

S

Singular in Moxy – MVP библиотека под Android
источник

S

Singular in Moxy – MVP библиотека под Android
Почему Composite не успевает проинициализироваться? onFirstViewAttach ведь вызвался уже

Caused by: kotlin.UninitializedPropertyAccessException: lateinit property compositeDisposable has not been initialized
источник