环氧树脂:如何使用@AutoModel批注并在没有控制器的情况下处理点击?

时间:2019-03-01 16:40:13

标签: android android-recyclerview epoxy epoxy-modelview

我开始使用环氧树脂库,因为我正在寻找一个使用RecyclerView组件时编写更少代码的库。

EpoxyRecyclerView似乎是一个很棒的组件,因为有了setModels方法,您可以简单地给出模型(基本上是一个简单的列表)。

问题1

第一个问题是:是否可以在不使用控制器的情况下自动为模型设置ID(使用@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注释只能在字段上使用,因此有没有办法在没有控制器的情况下自动为我的模型实例设置ID?

问题2

第二个问题是:可以在不使用控制器的情况下处理点击?

使用问题1的代码,如何处理对布局的几个小部件的单击(在我的情况下,单击TextView或单击itemView)?是否有一种方法可以覆盖DataBindingEpoxyModel使用的支架,以便直接将点击处理到支架中?

在我的情况下,我不想将OnClickListener定义为HeaderModel的属性,因为我想为所有类型HeaderModel的模型定义相同的行为(无使用控制器)。

预先感谢您的帮助!

编辑:我找到了问题2的答案。我只需要覆盖bind的{​​{1}}方法之一。但是我找不到一种没有控制器和DataBindingEpoxyModel注释的自动为模型设置ID的方法。

1 个答案:

答案 0 :(得分:0)

这是github仓库中第一个问题的答案:

  

没有办法自动设置ID(除自动模型外,   无论如何都不推荐这些日子)​​-您应该始终设置一个ID   手动在每个模型上。最好通过设置一个人来做到这一点   可读的字符串。在Wiki中对此进行了详细说明