Эпоксидная смола: как использовать аннотацию @AutoModel и обрабатывать щелчки без контроллера? - PullRequest
0 голосов
/ 01 марта 2019

Я начинаю использовать библиотеку эпоксидной смолы, потому что я ищу библиотеку для написания меньшего количества кода при использовании компонента 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.

1 Ответ

0 голосов
/ 07 апреля 2019

Вот ответ из репозитория github на первый вопрос:

Нет способа автоматически установить идентификатор (кроме автомодели, которую я бы не рекомендовал в наши дни) - вам следуетВсегда устанавливайте идентификатор вручную для каждой модели.Лучше всего сделать это, установив удобочитаемую строку.Это подробно описано в вики

...