@korsander

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

Суть такова: Есть RecyclerView в каждом элементе списка есть ProgressBar и необходимо по таймеру обновлять в нем прогресс. У ListView есть метод invalidateViews() который решал проблему обновления. Как обновить видимые элементы в RecyclerView? Метод адаптера notifyDataSetChanged() не подходит - необходима просто перерисовка, а notifyItemChanged(position) - вызывает мигание элементов при обновлении.
  • Вопрос задан
  • 2471 просмотр
Решения вопроса 1
agent10
@agent10
Software Engineer
Может попробовать хранить ссылки на ваши ProgressBar и по таймеру именно у него вызывать invalidate? Тем более вам не нужно перерисовывать всё остальное..
Либо как вариант, пробежаться по всем child у RecyclerView и вызвать им invalidate
Надо не забывать ListView такая монстр штука которая умела делать всё сама, а в RecyclerView много оставили вам самим..

Если посмотреть исходник ListView:
/**
     * Causes all the views to be rebuilt and redrawn.
     */
    public void invalidateViews() {
        mDataChanged = true;
        rememberSyncState();
        requestLayout();
        invalidate();
    }

Можно заметить, что данные так или иначе перестроятся..
Тогда в чем именно проблема с notifyDataSetChanged() у вас?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы