Элемент обновления (Уведомить об изменении данных) в EpoxyRecyclerview

У меня есть эпоксидный контроллер, реализованный с использованием привязки данных в котлине.

Что мне нужно сделать, так это обновить текст, когда я нажимаю на любой элемент и уведомляю об этом, как это делается в обычном адаптере. У меня есть проект, который делает что-то вроде этого https://github.com/xorum-io/epoxy_partial_update.git

Но в этом проекте они создали EpoxyModel и использовали функцию

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

Я не хочу создавать какой-либо объект модели, поскольку я использую привязку данных в своем проекте.

Когда я пытаюсь обновить какой-либо элемент и вызываю функцию requestModelBuild приложения epoxycontroller, происходит сбой.

      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.

Выше сообщение, которое я получаю после сбоя.

Может ли кто-нибудь помочь.

1 ответ

Обновите свою модель (класс данных) и отправьте данные, это обновит элемент, который вы хотите обновить.

      override fun buildModels() {

        UserModel_()
            .id(user.id)
            .name(user.name)
            .onClickListener { model, parentView, clickedView, position ->
                user.name = "New updated name"
                setData(user)
            }
            .addTo(this)
    }
Другие вопросы по тегам