Как стать автором
Обновить

Комментарии 5

Как Вы думаете, стоит ли помещать во ViewHolder основные методы?
Да, это будет очень удобно
Нет, лучше использовать длинную конструкцию

Нет, я думаю, не нужно изобретать велосипеды. Избавились от вьюх-полей -> получили уродливые конструкции -> напишем столько же кода для удобства. Зашибись, чо.

написать код для удобства — это разве проблема?) тем более это будет скрыто за библиотекой, не конечному же пользователю это писать.
Если вы переживаете за «уродство», то это только лишь пример для статьи, для лучшего понимания
Как Вы думаете, стоит ли помещать во ViewHolder основные методы?

Я думаю вообще не стоило делать такого рода ViewHolder. Получается, сломали стандартный ViewHolder, накостылили поверх кэш и теперь в каждом холдере есть лишний SparseArray, а в итоге эта конструкция для байндинга вида
((TextView)holder.find(R.id.textView)).setText(model.getText());
выглядит ничем не лучше, чем ViewHolder с полями.

При этом даже написав 1000 методов для удобства, все равно не покроете все возможные случаи байндинга ячейки.
Есть, кстати, либа, которая работает примерно по такому принципу: github.com/MEiDIK/SlimAdapter
Конечно, есть специфичные списки и для них действительно лучше воспользоваться обычным ViewHolder. Но, наверное, в 80-90% случаев нужен очень простой список с минимальным функционалом по инициализации элементов. И подход, продемонстрированный в данной статье поможет сильно сократить код.

Самому постоянно приходится писать большое количество разных списков, и сам постоянно ищу способы максимально оптимизировать этот процесс. Так что спасибо автору за демонстрацию еще одного интересного подхода и полезную библиотеку!

Как Вы думаете, стоит ли помещать во ViewHolder основные методы?


Я считаю что стоит — поможет сильно сократить код и добавит удобства.
При этом даже написав 1000 методов для удобства, все равно не покроете все возможные случаи байндинга ячейки.

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

Получается, сломали стандартный ViewHolder

не сломал, при желании можно использовать ViewRenderer, из предыдущей статьи. В нем можно использовать стандартный ViewHolder.

Есть, кстати, либа, которая работает примерно по такому принципу

Да, спасибо, только там возможности RecyclerView урезаны, здесь же все доступно — DiffUtil, Payload и т д
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации