находится RecyclerView, во ViewHolder имеется несколько неизменяемых ImageView и TextView (они никогда не меняются) и один TextView, текст которого должен часто меняться в рантайме. RV-адаптер получает данные через интерфейс у родительского вью (фрагмент), который сам вызывает нужные методы презентера (то есть адаптер сам не хранит список данных). Презентер уже достает данные из модели. В презентер раз в несколько секунд асинхронно постоянно приходят новые данные, которые нужно помещать в изменяемый TextView у ViewHolder'ов. Для разных ViewHolder разные данные. Сейчас я сделал так, что когда приходят новые данные, то презентер передает во вью индекс элемента и там уже вызывается notifyItemChanged(). Но это приводит к обновлению всего ViewHolder и заметна анимация изменения (при обновление элемент мигает: исчезает и появляется), хотя нужно поменять значение только у одного TextView. Возможно ли при такой схеме обновлять только конкретный TextView у конкретного ViewHolder без его полного обновления, либо хотя бы без моргающей анимации? Или надо перепиливать схему взаимодействия классов?
Можно костыльнуть и убрать анимацию, например
Подписываешь viewholder во время биндинга на листенер, когда анбиндинг отписываешь. Прокидываешь из презентера в адаптер событие.
Почитай про payload в onBindViewHolder
Обсуждают сегодня