Форум программистов, компьютерный форум, киберфорум
Наши страницы

Непонятный баг в ListView - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Обработка нажатия каждого элемента List View http://www.cyberforum.ru/android-dev/thread941124.html
Доброго времени суток! Нужна помощь в реализации нажатия на элемент лист вью. Необходимо присвоить каждому в списке элементу переход на разные активити. Я попробовал реализовать следующим...
Программирование Android Обработка нажатия элемента List View Доброго времени суток! Нужна помощь в реализации нажатия на элемент лист вью. Необходимо присвоить каждому в списке элементу переход на разные активити. Я попробовал реализовать следующим... http://www.cyberforum.ru/android-dev/thread941122.html
Fragments и Activity Программирование Android
Есть приложение некоего калькулятора, в котором есть activity_main.xml, где реализованы кнопки и клас MainActivity.java, в котором происходят все вычисления... В приложении реализовал боковое меню с...
Программирование Android Задать размер PopupWindow
Как установить вручную высоту и ширину окна, заданного в манифесте как диалог (@android:style/Theme.Dialog). Успешно открывается, но размеры выбираются контекстом. Нашел пример: win1...
Программирование Android Как подключится к эмулятора с того самого компа? http://www.cyberforum.ru/android-dev/thread940905.html
сервер слушает порт 13ХХХ, перепробовал все из этих айпишников: 10.0.2.1 10.0.2.2 10.0.2.3 10.0.2.4 / 10.0.2.5 / 10.0.2.6 10.0.2.15 127.0.0.1 - безуспешно.
Программирование Android Использование сторонней библиотеки Понадобилось добавить в приложение диалог выбора цвета. Встроенного ColorPicker'a я не нашёл и пошёл гуглить рукописные варианты. Самый подходящий из найденных для меня ColorPickerPreference. Но как... подробнее

Показать сообщение отдельно
Grafity
59 / 4 / 1
Регистрация: 31.07.2013
Сообщений: 42
22.08.2013, 11:17  [ТС]
Цитата Сообщение от V0v1k Посмотреть сообщение
Wenceslaus все правильно сказал, в getView, перед запуском таска, нужно проставлять дефолтную картинку.
еще проблемы могут быть если долго загружается картинка, она может стать неактуальной для ImageView, поэтому нужно в ImageView запихивать p.photo_id методом setTag, а перед вставкой картинки проверять не изменилась ли photo_id.
Словил ClassCastExeption...

Java
1
2
3
4
5
6
7
8
9
10
11
public View getView(final int position, View convertView, ViewGroup parent) {
 . . .
holder.name.setText(p.name);
holder.telephone.setText(p.tel);
holder.image.setTag(p.photo_id);
holder.image.setImageDrawable(getResources().getDrawable(R.drawable.standart_contact));
 
new BitmapAsyncLoad(holder.image).execute((int) p.photo_id);
            
return view;
        }
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
class BitmapAsyncLoad extends AsyncTask<Integer, Void, Bitmap>{
            
            private final WeakReference<ImageView> imageViewReference;
            private long photo_id;
            
            public BitmapAsyncLoad(ImageView imageView) {
                imageViewReference = new WeakReference<ImageView>(imageView);
            }
 
            @Override
            protected Bitmap doInBackground(Integer... imageDataRow) {
                // TODO Auto-generated method stub
                photo_id = imageDataRow[0];
                Log.d("doInBackground", "Грузим фото. ID = " + photo_id);
                return loadContactPhoto(photo_id);
            }
            
            @Override
            protected void onPostExecute(Bitmap bitmap) {
                super.onPostExecute(bitmap);
                
                if (isCancelled()) {
                    Log.i("onPostExecute", "Отмена");
                    bitmap = null;
                }
                
                if (imageViewReference != null && ((String)imageViewReference.get().getTag()).equals(photo_id) && bitmap != null) {
                    imageViewReference.get().setImageBitmap(bitmap);
                    Log.i("onPostExecute", "Установка аватара");
       
                }
 
            }
            
        }
Добавлено через 6 минут
Все! Отбой.

Все шикарно работает!

Немного поменял onPosnExecute()

Java
1
2
3
4
5
6
7
ImageView imageView = imageViewReference.get();
                
                if (imageViewReference != null && imageView.getTag().equals(photo_id) && bitmap != null) {
                    imageViewReference.get().setImageBitmap(bitmap);
                    Log.i("onPostExecute", "Установка аватара");
                    
                }
Добавлено через 13 минут
Всем спасибо большое за помощь!
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru