Comments 4
Первый пункт решается паттерном AdapterDelegate. Можно самописный, а можно и от Ханнеса Дорфмана. Это давно решенная проблема, непонятно, зачем велосипедить.
По второму пункту —
К примеру, если мы изменим одно поле у объекта из списка, то DiffUtil не отработает
Нужно всего лишь написать свой Callback, и всё отработает. Не понял вашей проблемы.
Плюс пара замечаний по коду. Single-Expression functions в основном нужны для сокращения кода и в ваших случаях указание типа явно всю идею ломает.
У вас неправильно написан холдер — в общем случае нельзя будет использовать общий RecycledViewPool для нескольких ресайклеров, что ухудшает переиспользование.
Объявлять проперти как функцию, а потом вызывать её через invoke — это какое-то отдельное извращение.
0
1. «Первый пункт решается паттерном AdapterDelegate». AdapterDelegate не сильно помогает решить проблему управления позицией элементов. У Ханнеса Дорфмана это не так заметно поскольку там используются однотипные списки, и я писал, почему это решение нам не совсем подошло.
2. «Нужно всего лишь написать свой Callback». В этом келбеке придется определить методы areItemsTheSame и areContentsTheSame для нормальной работы которых нужны будут старый и новый списки. Если мы изменим одно поле у объекта списка, то не сможем передать в келбек старый список для сравнения. Поэтому DiffUtil не отработает.
3. «общем случае нельзя будет использовать общий RecycledViewPool» — а это для данной статьи и не важно, основная ее задача показать как упростить работу со списком. Поэтому в примерах и представлены случаи с минимальным количеством кода.
4. По котлину замечания верные.
2. «Нужно всего лишь написать свой Callback». В этом келбеке придется определить методы areItemsTheSame и areContentsTheSame для нормальной работы которых нужны будут старый и новый списки. Если мы изменим одно поле у объекта списка, то не сможем передать в келбек старый список для сравнения. Поэтому DiffUtil не отработает.
3. «общем случае нельзя будет использовать общий RecycledViewPool» — а это для данной статьи и не важно, основная ее задача показать как упростить работу со списком. Поэтому в примерах и представлены случаи с минимальным количеством кода.
4. По котлину замечания верные.
0
на правах оффтопа
Не первый раз вижу фото, в котором компьютерно-ориентированные специалисты работают в синей подсветке. Причем не только фото — даже в видео попадается время от времени. Это просто чтобы сделать красиво, или с такой подсветкой действительно работается легче?
0
Sign up to leave a comment.
Головная боль от RecyclerView.Adapter — выход есть