0

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

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

问题 1

第一个问题是:是否可以在@AutoModel不使用控制器的情况下自动为模型设置 id(使用?)?

例如,我有以下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为 my 的属性,HeaderModel因为我想为该类型的所有模型定义相同的行为HeaderModel(不使用控制器)。

提前感谢您的帮助!

编辑:我找到了问题 2 的答案。我只需要覆盖bind. DataBindingEpoxyModel但是我没有找到一种方法来自动将 id 设置为没有控制器和@AutoModel注释的模型。

4

1 回答 1

0

这里是第一个问题的 github repo 的答案:

没有办法自动设置 id(除了 automodel,我现在也不推荐)——你应该总是在每个模型上手动设置一个 id。最好通过设置人类可读的字符串来做到这一点。这在 wiki 中有更详细的说明

于 2019-04-07T18:10:56.987 回答