Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
sarTemd174
58 / 58 / 15
Регистрация: 03.01.2012
Сообщений: 136
1

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

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

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

RecyclerView.Adapter загрузка изображения
При прокрутке RecycleView в ImageView загружается необходимая фотография.. Но при прокрутке почему...

Advanced RecyclerView и Expandable RecyclerView
Сделал expandable recycler view на основе advancedRecyclerView сборочки, но не важно это думаю,...

Загрузка изображений
Здравствуйте. Есть база изображений, например на web сервере, хостинге или соц сети. Задумка...

Загрузка изображений из галлереи
Как реализовать загрузку изображений из галереи при нажатии на кнопку? (Андроид программирование)

Загрузка изображений на сервер
Здравствуйте. Пытаюсь загрузить изображение на свой сервер в интернете. Нашел вот такой пример: ...

4
Pablito
2831 / 2251 / 760
Регистрация: 12.05.2014
Сообщений: 7,854
Завершенные тесты: 1
13.11.2015, 18:19 2
я делал с помощью библиотеки Picasso, примерно так
Java
1
2
3
4
@Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Picasso.with(context).load(imageUrl).into(holder.imageView);
    }
да да, одной строкой
0
sarTemd174
58 / 58 / 15
Регистрация: 03.01.2012
Сообщений: 136
13.11.2015, 18:29  [ТС] 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);
    }
0
Pablito
2831 / 2251 / 760
Регистрация: 12.05.2014
Сообщений: 7,854
Завершенные тесты: 1
13.11.2015, 18:35 4
я не пользовалс этой библиотекой, но что если убрать эту строку?
Цитата Сообщение от sarTemd174 Посмотреть сообщение
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
0
sarTemd174
58 / 58 / 15
Регистрация: 03.01.2012
Сообщений: 136
13.11.2015, 20:17  [ТС] 5
Ничего не поменялось.
Вот допустим у меня 11 элементов. Все видимые элементы загружаются хорошо и когда я скролю в пределах 5-ти видимых элементов все нормально, они не перерисовываются. Но когда начинаю скролить в конец списка или же просто быстро скролить туда-сюда, то становится заметно как картинки начинают перерисовываться с довольно ощутимой задержкой. Как сделать так, чтобы загруженные изображения не перерисовывались?

Добавлено через 1 час 4 минуты
Проблема была в том, что я не учел проверку на image.getDrawable()!=null, поэтому изображения каждый раз перезагружались, даже если до этого уже были загружены.
Тему можно закрыть
0
13.11.2015, 20:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2015, 20:17

Загрузка изображений из сети в ListView
Здравствуйте. Имеется файл в JSON формате. В нем дан массив объектов, каждый объект содержит поле...

Загрузка изображений с RSS ленты
Есть Reader RSS ленты, который преобразует это все в ListView. Как мне сделать так, чтобы вдобавок...

Загрузка изображений из галереи в GridView
Мне нужно, чтобы при создании активити в GridView загружались все изображения, которые хранятся у...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru