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

Неадекватное поведение адаптера ListView - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Не могу программно открыть папку с фото http://www.cyberforum.ru/android-dev/thread1461478.html
Здравствуйте, написал свой файловый менеджер, но при запуске должна открыться папка /sdrard/dcim/camera, выдает ошибку, так же при выборе фото в этой папке оно должно загружаться в imageview, выдает ошибку, хотя другие файлы jpg и gif в других папках загружает отлично. В чем же может быть дело?
Android Смена цветовых тем для стилей View Сейчас в моем приложении одна тема и есть много стилей для разных View. К примеру вот кусок этих стилей. <!-- styles.xml --> <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light" /> <style name="title"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:textSize">22sp</item> <item... http://www.cyberforum.ru/android-dev/thread1461389.html
ориентация экрана Android
Как сделать так чтобы в тоже время запретить вертикальную ориентацию активити. Но в горизонтальном положении его можно было поворачивать как удобно пользователю?? чтоб оно никогда не было вверх ногами
Android Ошибки в logcat
День добрый! Решил написать простенькое приложение вот с этого примера http://android-er.blogspot.ru/2014/09/touch-gridview-to-show-photo.html Но, к сожалению , при эмуляции вылетает. Никак не могу понять, в чем дело. Код logcat прикрепляю текстовым файлом, сюда не хочет загружаться Подскажите пожалуйста.
Android Абстрактная активити http://www.cyberforum.ru/android-dev/thread1460164.html
Здравствуйте. Хочу сделать активити для входа в приложение (ввод логина, пароля, проверка этого всего на сервере и т.д.). И хочу использовать ее в нескольких приложениях в качестве библиотеки, но в каждом рисовать свой layout. Попробовал в метод setContentView вместо ссылки на ресурс layout'a передать абстрактный метод, который возвращает этот id и в наследниках его переопределил. Далее добавил...
Android Подключиться к БД Имеется MySQL база данных на сервере вида http://xxx.1gb.ru Логин , пароль для входа в PhpMyAdmin Каким образом к ней подключиться, чтобы можно было использовать как обычную SQLiteDataBase в коде? Ткните в ссылку какую нибудь или пример кода. Нужно очень срочно. Заранее большое спасибо! подробнее

Показать сообщение отдельно
Serbis
3 / 3 / 2
Регистрация: 13.07.2012
Сообщений: 123
29.05.2015, 10:39  [ТС]     Неадекватное поведение адаптера ListView
Armagedo, вызов getView идет не один раз, так как как Log.d("TICK", "OK"); размещенный в начале getView дает такой вывод:

05-29 07:16:36.324 4100-4100/ru.solkris.bodymetrics D/THICK﹕ OK
05-29 07:16:36.324 4100-4100/ru.solkris.bodymetrics D/THICK﹕ OK
05-29 07:16:36.324 4100-4100/ru.solkris.bodymetrics D/THICK﹕ OK
05-29 07:16:36.324 4100-4100/ru.solkris.bodymetrics D/THICK﹕ OK
05-29 07:16:36.324 4100-4100/ru.solkris.bodymetrics D/THICK﹕ OK
05-29 07:16:36.324 4100-4100/ru.solkris.bodymetrics D/THICK﹕ OK
05-29 07:16:36.324 4100-4100/ru.solkris.bodymetrics D/THICK﹕ OK
05-29 07:16:36.324 4100-4100/ru.solkris.bodymetrics D/THICK﹕ OK
05-29 07:16:36.325 4100-4100/ru.solkris.bodymetrics D/THICK﹕ OK

Касаемо цикла, он там находился ка времянка, сейчас адаптер причесан. Суть работы его в том, что на вход приходит дата и массив bitmap, Адаптер должен создать в LinearLayout элементов группу ImageView и разместить там эти Bitmapы.
Новый код :
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
public class ListGalleryAdapter extends ArrayAdapter<String> {
    private ArrayList<String> dates = new ArrayList<String>();
    private ArrayList<ArrayList<Bitmap>> images = new ArrayList<ArrayList<Bitmap>>();
    private int resource;
    private Context context;      
    private boolean anim = false;
    private ViewHolder holder;
 
    public ListGalleryAdapter(Context context, int resource, ArrayList<String> dates, ArrayList<ArrayList<Bitmap>> images, boolean anim) {
        super(context, resource, dates);
 
        this.resource = resource;
        this.context = context;
        this.anim = anim;
        this.dates = dates;
        this.images = images;
 
    }
 
    static class ViewHolder {
        TextView tvDate;
        LinearLayout lGallery;
    }
 
    @Override
    public String getItem(int position) {
        return dates.get(position);
    }
 
    @Override
    public int getPosition(String item) {
        return super.getPosition(item);
    }
 
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {       
        Log.d("THICK", "OK");
        holder = new ViewHolder();
        View v = convertView;
        LayoutInflater vi;
        vi = LayoutInflater.from(getContext());
 
        if (v == null) {
            v = vi.inflate(resource, null);
            holder.tvDate = (TextView) v.findViewById(R.id.tv_date_gallery);
            holder.lGallery = (LinearLayout) v.findViewById(R.id.lGallery);
            v.setTag(holder);
        } else {
            holder = (ViewHolder) v.getTag();
        }
 
        holder.tvDate.setText(dates.get(position));
        for (int i = 0; i < images.get(position).size(); i++) {
            addImage(images.get(position).get(i));
        }
        return v;
 
    }
 
    private void addImage(Bitmap bitmap) {
        ImageView iv = new ImageView(context);
        iv.setImageBitmap(bitmap);
        holder.lGallery.addView(iv);
        ViewGroup.LayoutParams params = iv.getLayoutParams();
        params.width = Core.getInstance().dpToPx(100);
        params.height = Core.getInstance().dpToPx(100);
        iv.setLayoutParams(params);
 
    }
 
}
Для меня так и остаются непонятными причины множественного вызова getView на каждом элементе. При этом я обратил внимание еще на тот факт, что некоторые ImageView не создаются. Может быть это свойство именно адаптеров, что в них нельзя создавать динамические компоненты? Потому я уже такое количество глюков с ними поел, типа постоянно расфокусированный EditTextов.

Добавлено через 10 минут
Все, нашел косяк через дебаг. После return v; происходит уход во внутренний exception класса view. Я конечно не уверен до конца, но предположение таково. Если мне не изменят память то динамическое создание компонентов gui идет на уровне вторичных потоков. И получается что на момент возврата из getView что то в разметке еще не создалось. Из-за этого происходит exeption и повторный вызов getView. И так происходит покуда все не пройдет правильно. Значит создавать динамическую разметку в адаптерах нельзя. Буду знать на будущее.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru