[英]Epoxy : how to use the @AutoModel annotation and handle clicks without controller?
我開始使用環氧樹脂庫,因為我正在尋找一個使用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)
這段代碼崩潰是因為我沒有為HeaderModel_()
實例設置id
。 AutoModel
批注只能在字段上使用,因此有沒有辦法在沒有控制器的情況下自動為我的模型實例設置ID?
第二個問題是:是否可以在不使用控制器的情況下處理點擊?
使用問題1的代碼,如何處理對布局的幾個小部件的單擊(在我的情況下,單擊TextView
或單擊itemView
)? 有沒有一種方法可以覆蓋DataBindingEpoxyModel
所使用的支架,以便直接將點擊處理到支架中?
在我來說,我不想定義OnClickListener
作為我的屬性HeaderModel
,因為我想定義類型的所有型號相同的行為HeaderModel
(不使用控制器)。
預先感謝您的幫助!
編輯:我找到了問題2的答案。我只需要重寫DataBindingEpoxyModel
的bind
方法之一。 但是我沒有找到一種無需控制器和@AutoModel
注釋即可自動為模型設置ID的@AutoModel
。
這是來自github回購的第一個問題的答案:
無法自動設置ID(除了自動模型,無論如何我最近都不建議這樣做)-您應該始終在每個模型上手動設置ID。 最好通過設置人類可讀的字符串來做到這一點。 Wiki中對此有更詳細的說明
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.