我开始使用环氧树脂库,因为我正在寻找一个使用RecyclerView
组件时编写更少代码的库。
EpoxyRecyclerView
似乎是一个很棒的组件,因为有了setModels
方法,您可以简单地给出模型(基本上是一个简单的列表)。
第一个问题是:是否可以在不使用控制器的情况下自动为模型设置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?
第二个问题是:可以在不使用控制器的情况下处理点击?
使用问题1的代码,如何处理对布局的几个小部件的单击(在我的情况下,单击TextView
或单击itemView
)?是否有一种方法可以覆盖DataBindingEpoxyModel
使用的支架,以便直接将点击处理到支架中?
在我的情况下,我不想将OnClickListener
定义为HeaderModel
的属性,因为我想为所有类型HeaderModel
的模型定义相同的行为(无使用控制器)。
预先感谢您的帮助!
编辑:我找到了问题2的答案。我只需要覆盖bind
的{{1}}方法之一。但是我找不到一种没有控制器和DataBindingEpoxyModel
注释的自动为模型设置ID的方法。
答案 0 :(得分:0)
这是github仓库中第一个问题的答案:
没有办法自动设置ID(除自动模型外, 无论如何都不推荐这些日子)-您应该始终设置一个ID 手动在每个模型上。最好通过设置一个人来做到这一点 可读的字符串。在Wiki中对此进行了详细说明