Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
sarTemd174
57 / 57 / 1
Регистрация: 03.01.2012
Сообщений: 136
#1

Загрузка изображений в RecyclerView - Android

13.11.2015, 17:58. Просмотров 875. Ответов 4

Здравствуйте, каким образом можно динамически загружать картинки в RecyclerView из интернета, чтобы все это дело не тормозило и было более менее плавно?
Допустим у меня есть ячейки с названием автомобилей, мне нужно взять готовые изображения на сервере и вставить их в RecyclerView.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2015, 17:58     Загрузка изображений в RecyclerView
Посмотрите здесь:

Android Загрузка изображений из сети в ListView
Android Загрузка изображений на сервер
Загрузка изображений в TextView из HTML Android
Android RecyclerView использование ItemDecoration
Android RecyclerView и SQLite
RecyclerView Android
RecyclerView click Android
Retrofit Recyclerview Android
Загрузка изображений с RSS ленты Android
Android Recyclerview-stickyheaders
RecyclerView и SQLite Android
Android RecyclerView.Adapter загрузка изображения

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
2063 / 1805 / 562
Регистрация: 12.05.2014
Сообщений: 6,432
Завершенные тесты: 1
13.11.2015, 18:19     Загрузка изображений в RecyclerView #2
я делал с помощью библиотеки Picasso, примерно так
Java
1
2
3
4
@Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Picasso.with(context).load(imageUrl).into(holder.imageView);
    }
да да, одной строкой
sarTemd174
57 / 57 / 1
Регистрация: 03.01.2012
Сообщений: 136
13.11.2015, 18:29  [ТС]     Загрузка изображений в RecyclerView #3
Я сделал примерно тоже самое но с помощью Glide

Java
1
2
3
4
5
6
Glide.with(context)
                .load(carURI)
                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
                .crossFade()
                .animate(android.R.anim.fade_in)
                .into(carImageView);
И вызываю это все в onBindViewHolder но когда начинаю скролить, то изображения начинают перезагружаться каждый раз заного. Не знаю как объяснить, но получается что событие onBindViewHolder срабатывается слишком много раз (даже тогда, когда изображение уже загружено)

Java
1
2
3
4
5
6
7
8
9
10
11
12
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
            if (getItemViewType(position) == Car) {
                ((CarViewHolder) viewHolder).update(Cars.getCars().get(position));
            }
            else if (viewHolder instanceof EmptyStateViewHolder &&
                    Library.hasRWPermission(getActivity())) {
                EmptyStateViewHolder emptyHolder = ((EmptyStateViewHolder) viewHolder);
                emptyHolder.setReason(R.string.empty);
                emptyHolder.setDetail(R.string.empty_detail);
                emptyHolder.setButton1(R.string.action_try_again);
            }
        }
Java
1
2
3
4
5
6
7
8
9
10
public void update(Car c){
 
            carName.setText(c.CarName);
            Glide.with(context)
                .load(carURI)
                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
                .crossFade()
                .animate(android.R.anim.fade_in)
                .into(carImageView);
    }
Паблито
2063 / 1805 / 562
Регистрация: 12.05.2014
Сообщений: 6,432
Завершенные тесты: 1
13.11.2015, 18:35     Загрузка изображений в RecyclerView #4
я не пользовалс этой библиотекой, но что если убрать эту строку?
Цитата Сообщение от sarTemd174 Посмотреть сообщение
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
sarTemd174
57 / 57 / 1
Регистрация: 03.01.2012
Сообщений: 136
13.11.2015, 20:17  [ТС]     Загрузка изображений в RecyclerView #5
Ничего не поменялось.
Вот допустим у меня 11 элементов. Все видимые элементы загружаются хорошо и когда я скролю в пределах 5-ти видимых элементов все нормально, они не перерисовываются. Но когда начинаю скролить в конец списка или же просто быстро скролить туда-сюда, то становится заметно как картинки начинают перерисовываться с довольно ощутимой задержкой. Как сделать так, чтобы загруженные изображения не перерисовывались?

Добавлено через 1 час 4 минуты
Проблема была в том, что я не учел проверку на image.getDrawable()!=null, поэтому изображения каждый раз перезагружались, даже если до этого уже были загружены.
Тему можно закрыть
Yandex
Объявления
13.11.2015, 20:17     Загрузка изображений в RecyclerView
Ответ Создать тему
Опции темы

Текущее время: 15:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru