Не следует ли использовать привязку данных для представлений элементов RecyclerView?

В настоящее время я изучаю, почему некоторые из моих RecyclerViews не очень хорошо работают. Пользовательский интерфейс запаздывает, особенно когда необходимо нарисовать все содержимое представления.
Используя systrace, я наткнулся на большой кадр, в котором RecyclerView размещает свои представления:

Как видите, одни и те же виды рисуются неоднократно. Внутри systrace я нашел следующее описание во фрейме RecyclerView:

OnLayout has been called by the View system. If this shows up too many times in Systrace, make sure the children of RecyclerView do not update themselves directly. This will cause a full re-layout but when it happens via the Adapter notifyItemChanged, RecyclerView can avoid full layout calculation.

Представления моего RecyclerView используют привязку данных Google с наблюдаемыми значениями.
Значение для обновления TextView я не использую textView.setText(titleTxt) но title.set(titleTxt) где title будет иметь тип ObservableField<String>,
Так что, очевидно, я не звоню notifyItemChanged но обновлять наблюдаемые поля можно только на объектах, привязанных к макету.

Разве неправильно использовать привязку данных в этом случае с точки зрения производительности? Если да, то в чем смысл связывания данных? Мобильный интерфейс состоит в основном из списков.

1 ответ

К сожалению, Google оставил привязку данных к появлению Kotlin, поэтому, если вы думаете, что это замедляет работу, как это было со мной, просто прекратите использовать это или перейдите в Kotlin все вместе. Что-то вроде того, что мы пытаемся работать с вещами, которые постоянно ломаются и остаются позади, но это именно то, чем решил Google.

Другие вопросы по тегам