簡體   English   中英

環氧樹脂:如何使用@AutoModel批注並在沒有控制器的情況下處理點擊?

[英]Epoxy : how to use the @AutoModel annotation and handle clicks without controller?

我開始使用環氧樹脂庫,因為我正在尋找一個使用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)

這段代碼崩潰是因為我沒有為HeaderModel_()實例設置id AutoModel批注只能在字段上使用,因此有沒有辦法在沒有控制器的情況下自動為我的模型實例設置ID?

問題2

第二個問題是:是否可以在不使用控制器的情況下處理點擊?

使用問題1的代碼,如何處理對布局的幾個小部件的單擊(在我的情況下,單擊TextView或單擊itemView )? 有沒有一種方法可以覆蓋DataBindingEpoxyModel所使用的支架,以便直接將點擊處理到支架中?

在我來說,我不想定義OnClickListener作為我的屬性HeaderModel ,因為我想定義類型的所有型號相同的行為HeaderModel (不使用控制器)。

預先感謝您的幫助!

編輯:我找到了問題2的答案。我只需要重寫DataBindingEpoxyModelbind方法之一。 但是我沒有找到一種無需控制器和@AutoModel注釋即可自動為模型設置ID的@AutoModel

這是來自github回購的第一個問題的答案:

無法自動設置ID(除了自動模型,無論如何我最近都不建議這樣做)-您應該始終在每個模型上手動設置ID。 最好通過設置人類可讀的字符串來做到這一點。 Wiki中對此有更詳細的說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM