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

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

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

Здравствуйте, каким образом можно динамически загружать картинки в RecyclerView из интернета, чтобы все это дело не тормозило и было более менее плавно?
Допустим у меня есть ячейки с названием автомобилей, мне нужно взять готовые изображения на сервере и вставить их в RecyclerView.
http://www.cyberforum.ru/android-dev/thread1884858.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2015, 17:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Загрузка изображений в RecyclerView (Программирование Android):

Advanced RecyclerView и Expandable RecyclerView
Сделал expandable recycler view на основе advancedRecyclerView сборочки, но не...

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

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

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

Загрузка изображений в TextView из HTML
Здравствуйте ) Достаточно частый вопрос. Но все усложняется тем, что это все...

4
Pablito
2649 / 2131 / 726
Регистрация: 12.05.2014
Сообщений: 7,443
Завершенные тесты: 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
2649 / 2131 / 726
Регистрация: 12.05.2014
Сообщений: 7,443
Завершенные тесты: 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
Привет! Вот еще темы с решениями:

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

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

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

Загрузка изображений из стандартной галереи в GridLayout
Всем привет! Нужно достать фоточки с телефона и красиво отобразить в...


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

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

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