1

我在 kotlin 中使用数据绑定实现了环氧树脂控制器。

我需要做的是在我单击任何项​​目时更新文本并通知它,就像在普通适配器中所做的那样。我有一个项目做这样的事情https://github.com/xorum-io/epoxy_partial_update.git

但是在这个项目中,他们创建了 EpoxyModel 并使用了函数

override fun bind(view: View, previouslyBoundModel: EpoxyModel<*>) {
    super.bind(view, previouslyBoundModel)
}

我不想创建任何模型对象,因为我在我的项目中使用数据绑定。

当我尝试更新任何项目并调用功能requestModelBuild环氧树脂控制器应用程序崩溃。

com.airbnb.epoxy.ImmutableModelException: The model was changed between being bound and when models were rebuilt

Epoxy attribute fields on a model cannot be changed once the model is added to a controller. Check that these fields are not updated, or that the assigned objects are not mutated, outside of the buildModels method. The only exception is if the change is made inside an Interceptor callback. Consider using an interceptor if you need to change a model after it is added to the controller and before it is set on the adapter. If the model is already set on the adapter then you must call `requestModelBuild` instead to recreate all models.

以上是我在崩溃后收到的消息。

任何人都可以请帮忙。

4

1 回答 1

0

更新您的模型(数据类)并提交数据,这将更新您要更新的项目。

override fun buildModels() {

        UserModel_()
            .id(user.id)
            .name(user.name)
            .onClickListener { model, parentView, clickedView, position ->
                user.name = "New updated name"
                setData(user)
            }
            .addTo(this)
    }
于 2021-10-15T20:52:46.263 回答