Я начинаю использовать библиотеку эпоксидной смолы, потому что я ищу библиотеку для написания меньшего количества кода при использовании компонента RecyclerView
.
Кажется, EpoxyRecyclerView
отличный компонент, так как вы можете простодать модели (в основном простой список), благодаря методу setModels
.
Вопрос 1
Первый вопрос: можно автоматически установить идентификатор модели (используя@AutoModel
?) без использования контроллера?
Например, у меня есть следующий DataBindingEpoxyModel
класс:
@EpoxyModelClass(layout = R.layout.item_header)
abstract class HeaderModel
: DataBindingEpoxyModel()
{
@StringRes
@EpoxyAttribute
var title: Int? = null
}
И я использую его так в своем Fragment
:
val models = mutableListOf<EpoxyModel<*>>()
models.add(HeaderModel_().title(R.string.catalogue_header_categories_title)
// [...]
recyclerView?.setModels(models)
Этот кодпадает, потому что я не установил id
для экземпляра HeaderModel_()
.Аннотация AutoModel
должна использоваться только в поле, поэтому есть ли способ автоматически установить идентификатор для экземпляра моей модели без контроллера?
Вопрос 2
Второй вопрос:: можно обрабатывать клики без использования контроллера?
Используя код вопроса 1, как обработать щелчок по нескольким виджетам макета (в моем случае щелчок по TextView
или щелчок по itemView
)?Есть ли способ переопределить держатель, используемый DataBindingEpoxyModel
, чтобы обрабатывать щелчок непосредственно в держателе?
В моем случае я не хочу определять OnClickListener
как атрибут моего HeaderModel
потому что я хотел бы определить одинаковое поведение для всех моделей типа HeaderModel
(без использования контроллера).
Заранее спасибо за помощь!
Изменить: Я нашел ответ на вопрос 2. Мне просто нужно переопределить один из bind
метод DataBindingEpoxyModel
.Но я не нахожу способ автоматически установить идентификатор для модели без контроллера и аннотации @AutoModel
.