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

Загрузки изображений из сети в адаптере GridView - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Fragments http://www.cyberforum.ru/android-dev/thread1065474.html
Здравствуйте, я новичок и многого не понимаю. У меня такой вопрос, что содержит в себе приложение по типу ВКонтаке и Facebook. Я имею ввиду NavigationDrawer и несколько фрагментов? Или что-то другое, если я прав, то не могли бы Вы привести пример как сделать, так чтобы при нажатии на определенный элемент NavigationDrawer открывался определенный фрагмент. Заранее благодарю за ответ.
Программирование Android Вывод картинки при выполнении условия Доброго времени суток нужна помощь необходимо выводить картинку при выполнении условия подскажите как это сделать http://www.cyberforum.ru/android-dev/thread1065274.html
Локальная база данных в JSON. Возможно ли сразу добавить её в файлы приложения Программирование Android
Есть база данных в формате JSON. Возможно ли сразу добавить её в файлы приложения и использовать её как локальную базу?
Замена цвета background с задержкой для ячейки ListView Программирование Android
Здравствуйте! Я делаю приложение для тестов. Собственно хочу реализовать следующие. Есть ListView, при нажатии на ячейку если ответ правильный меняется background ячейки на зеленый, если нет то background красный. После этого делается пауза на 1 секунду, все ячейки возвращаются в предыдущие состояние и загружается новая колекция для адаптера. Да используется BaseAdapter. У меня не...
Программирование Android Анимация http://www.cyberforum.ru/android-dev/thread1064931.html
Доброго всем дня! Прошу помощи в таком вопросе. Сделал анимаюцию по нажатию на кнопку, выплывающий view, находится она в Pager и собственно такая картина, анимация срабатывает, но вот вторично при нажатии на кнопку не работает, если же перелистнуть pager, то в новосозданном view анимация срабатывает также один раз, вторичное нажатие ничего не дает. Так же если отработать анимацию, после чего...
Программирование Android Страница пользователя, работа с текстом День добрый! Подскажите как реализовать данную функцию: есть активити с текстом, нужна страница с настройками на которой пользователь мог бы выбирать размер шрифта:мелкий/средний/крупный +и пункт - ночной режим с инверсией цвета (черный фон и белый/светлосерый шрифт) подробнее

Показать сообщение отдельно
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
09.01.2014, 20:25     Загрузки изображений из сети в адаптере GridView
Sanu0074, сначала опишем LruCache. Я бы посоветовал делать это в Application классе:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class TheApplication extends Application {
 
    private static TheApplication sApplication;
    private LruCache<String, Bitmap> mMemoryCache;
 
    public static TheApplication getInstance() {
        return sApplication;
    }
 
 
@Override
protected void onCreate(Bundle savedInstanceState) {
    sApplication = this;
    final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
    final int cacheSize = maxMemory / 8;
 
    mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
        @Override
        protected int sizeOf(String key, Bitmap bitmap) {
            // The cache size will be measured in kilobytes rather than
            // number of items.
            return bitmap.getByteCount() / 1024;
        }
    };
}
 
public void addBitmapToMemoryCache(String key, Bitmap bitmap) {
    if (getBitmapFromMemCache(key) == null) {
        mMemoryCache.put(key, bitmap);
    }
}
 
public Bitmap getBitmapFromMemCache(String key) {
    return mMemoryCache.get(key);
}
}
не забываем добавить его в манифест как Application name. Теперь у нас есть доступ к кэшу.

Далее - адаптер:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class YourAdapter extends BaseAdapter {
    //Тут будем хранить то, что у нас в процессе закачки
    private Set<String> inProgressSet = Collections.synchronizedSet(new HashSet<String>());
 
    .....
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        .....
        new ImageFetcher("your_yrl", myView).execute();
        ....
    }
 
   //Inner class
 
    class ImageFetcher extends AsyncTask<Void, Void, Bitmap> {
 
        private String imageUrl;
        private ImageView imageView;
 
        ImageFetcher(String imageUrl, ImageView imageView) {
            this.imageUrl = imageUrl;
            this.imageView = imageView;
        }
 
        @Override
        protected Bitmap doInBackground(Void... params) {
            if (inProgressSet.contains(imageUrl)) {
                return null;
            }
            Bitmap fromMemoryCache = TheApplication.getInstance().getBitmapFromMemCache(imageUrl);
            if (fromMemoryCache != null) {
                return fromMemoryCache;
            }
            inProgressSet.add(imageUrl);
            //fetch from network
        }
 
        @Override
        protected void onPostExecute(Bitmap bitmap) {
            super.onPostExecute(bitmap);            
            if (bitmap == null) return;
            inProgressSet.remove(imageUrl);
            TheApplication.getInstance().addBitmapToMemoryCache(imageUrl, bitmap);
            imageView.setImageBitmap(bitmap);
        }
    }
}
Должно работать, я не проверял

Добавлено через 5 часов 10 минут
Sanu0074, для справки,
Цитата Сообщение от Sanu0074 Посмотреть сообщение
arrayList.get(position)
вынесете в отдельную переменную, код чуть красивее будет
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru