Pull to refresh

Comments 9

Вброшу немного. Пробовал разные решения-обёртки над RecyclerView. Но это не таблетка счастья для меня. И вот почему:
1) Я не создаю по 5 экранов-списков на дню, чтобы меня это действительно мучало.
2) Я прекрасно знаю как заставить работать стандартный RecyclerView, а вот та обёртка которую использовал последний раз 2 месяца назад уже не помню… хочу ли вспоминать — не особо.
3) Бывает нужно сделать что-то хитрое, на что обёртка не способна… и вот ты либо выкидываешь полуготовый код и переходишь на обычный RecyclerView, или дорабатываешь обёртку(а тут уже п.2 снова)
Ну вот у меня в проекте как минимум 10ок таких простых ресайклеров. Тут многое зависит от проекта. Да есть конечно и сложные списки и там придется реализовывать руками все. А есть те кто пишут кучу однотипных адаптеров изо дня в день
Верно, я бы сказал, что зависит не от проектов, а от их сменяемости. Если проектов сотни и каждый по месяцу, то наверное такая обёртка имеет смысл. А если один на пару лет…

Честно говоря, вы не объяснили, что вам не хватило в предыдущей реализации и что именно вы решили дописывать. Поэтому статья сразу становится непонятной.

Потому что в предыдущей реализации не было ни диф утилсов ни клик листенера. Так же для ресайклера с 1им View Holder я вынес реализацию получения ViewHolder в абстрактный метод

Давно уже есть более или менее стандартное решение — Adapter Delegates.
Diff лучше считать на другом треде.

Несколько наблюдений:
1) Так как холдеры создаёт одна фабрика. то чем больше в проекте холдеров, тем больше будет разростаться этот when в ней
2) Использование layout id для определения какой холдер создать не даёт возможность переиспользовать лэйауты для разных холдеров, это конечно не так уж критично, но всё равно может вылезти боком.

Я вот поддержу zagayevskiy Стоит и правда посмотреть на Adapter Delegates. Решение существует уже довольно давно и позволяет разнести ответственность на делегаты, а не держать всё в одном месте.

P.S. вообще не понял зачем адаптер через lateinit сделан
Это же kotlin, в нем можно не создавать целый интерфейс для ClickListener, а написать что-то типа такого:
var itemClickListener: ((T)->Unin)? = null
Sign up to leave a comment.

Articles