tgoop.com/android_live/581
Last Update:
Как сделать адаптеры в RecyclerView лучше?
#kotlin #recyclerview
При написании стандартных адаптеров в RecyclerView
, мы часто сталкиваемся с дублированием кода. Особенно это заметно при использовании разных ViewType
. Думаю, что многим знаком подобный код:if (things.get(position) is Duck) {
return TYPE_DUCK
} else if (things.get(position) is Mouse) {
return TYPE_MOUSE
}
То есть при добавлении нового элемента в список, нам нужно менять адаптер в нескольких местах.
Существует несколько способов улучшения работы с адаптерами:
1️⃣ Использование layout в качестве идентификатора. Стоит помнить, что layout — это уникальный int, который можно использовать в качестве идентификатора. В этой статье автор предлагает использовать TypeFactory
, где можно перечислить всю логику работы с идентификаторами для адаптера, и в случае добавления нового элемента – просто дописать строку в этой Factory. Хороший подход, который можно улучшить и использовать без добавления библиотек.
2️⃣ Использование Delegate для описание логики ViewHolder. Второй подход схож с первым. Можно прописать всю логику для работы с ViewHolder в одном классе Delegate
. Потом просто регистрировать подходящие делегаты для нужного адаптера, не думая про имплементацию. Почитать подробнее про подход можно тут и уже есть библиотека, которую стоит изучить прежде чем затягивать к себе в проект.
3️⃣ Использование библиотек. Во втором подходе уже был описан пример созданной библиотеки, но кроме неё есть ещё их огромное множество. На мой взгляд, удачная библиотека описана в этой статье и называется Kiel. При помощи Kotlin DSL наш адаптер становится компактным, а кроме этого мы можем использовать библиотеку как с Paging Library, так и с Diff Utils. Стоит обратить внимание и применить подобный подход для своих приложений, если вам нравится DSL.
А как вы улучшаете свои адаптеры?
BY Android Live 🤖

Share with your friend now:
tgoop.com/android_live/581