简体   繁体   English

EpoxyRecyclerview 中的更新项目(通知数据更改)

[英]Update item (Notify Datachange) in EpoxyRecyclerview

I have epoxy controller implemented using databinding in kotlin.我使用 kotlin 中的数据绑定实现了环氧树脂 controller。

What I need to do is update text when I click on any item and notify that as done in normal adapter.我需要做的是在我单击任何项目时更新文本并通知它,就像在普通适配器中所做的那样。 I got a project which does something like this https://github.com/xorum-io/epoxy_partial_update.git我有一个项目,它做这样的事情https://github.com/xorum-io/epoxy_partial_update.git

But in this project they have created EpoxyModel and used function但在这个项目中,他们创建了 EpoxyModel 并使用了 function

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

I don't want to create any Model object as I am using databinding in my project.我不想创建任何 Model object 因为我在我的项目中使用数据绑定。

When I try to update any item and call function requestModelBuild of epoxycontroller application crashes.当我尝试更新任何项目并调用环氧树脂控制器应用程序崩溃的 function 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.

Above is message that I get after crash.以上是我在崩溃后收到的消息。

Can anyone please help.任何人都可以请帮忙。

Update your Model(Data class) and submit data, this will update the item that you want to update.更新您的模型(数据类)并提交数据,这将更新您要更新的项目。

override fun buildModels() {

        UserModel_()
            .id(user.id)
            .name(user.name)
            .onClickListener { model, parentView, clickedView, position ->
                user.name = "New updated name"
                setData(user)
            }
            .addTo(this)
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM