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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Tsegorah
1 / 1 / 0
Регистрация: 02.03.2014
Сообщений: 86
#1

Как при построении Listview выибрать картинку в зависимости от значения в БД? - Android

01.05.2016, 18:05. Просмотров 220. Ответов 10
Метки нет (Все метки)

Я использую SimpleCursorAdapter. У меня в БД примерно 1к строк. Я хочу хранить в поле таблицы не всю картинку целиком, а только значение, в зависимости от которого будет выбираться одна из 3х картинок.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2016, 18:05     Как при построении Listview выибрать картинку в зависимости от значения в БД?
Посмотрите здесь:

Android Как при нажатии на пункт ListView перейти на другую форму
Android При клики в BaseAdapter меняется массив строк, как пересоздать ListView с новым массивом?
Android Цвет ListView при скролинге
Значения в ListView Android
Сохранить измененные значения EditText в ListView при прокрутке Android
Intellij Idea 13, ошибка при построении проекта : Unable to execute DX Android
Android ListView ошибка при прокручивании
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
01.05.2016, 18:13     Как при построении Listview выибрать картинку в зависимости от значения в БД? #2
В чем проблема? Храните в таблице некие условные значения и по ним выбирайте загрузку нужной картинки из ресурсов, например. Скажем, если в поле таблицы "0", то это картинка №1, если "1", то картинка №2, если "15", то снова картинка №2 и т.д.
Tsegorah
1 / 1 / 0
Регистрация: 02.03.2014
Сообщений: 86
01.05.2016, 21:26  [ТС]     Как при построении Listview выибрать картинку в зависимости от значения в БД? #3
Я понимаю это, но не понимаю, как это сделать. Я думал, что надо перегрузить метод адаптера setViewImage(ImageView v, String value), сделать как-то так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    @Override
    public void setViewImage(ImageView v, String value) {
        String uri;
        Log.e("log", "====================== setViewImage");
        switch (this.getCursor().getInt(4)) {
            case 0:
                Log.e("log", "======================            0");
                uri = Integer.toString(R.drawable.neload_icon);
                break;
            case 2:
                Log.e("log", "======================            2");
                uri = Integer.toString(R.drawable.delete_icon);
                break;
            default:
                Log.e("log", "======================            default");
                uri = Integer.toString(R.drawable.reload_icon);
        }
        super.setViewImage(v, uri);
    }
А этот метод при построении списка даже не вызывается. И у меня есть подозрение, что и uri я неправильно нахожу.
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
01.05.2016, 21:35     Как при построении Listview выибрать картинку в зависимости от значения в БД? #4
uri это не совсем строка. Непонятно, зачем вам uri для получения картинки из ресурсов?
Tsegorah
1 / 1 / 0
Регистрация: 02.03.2014
Сообщений: 86
02.05.2016, 18:00  [ТС]     Как при построении Listview выибрать картинку в зависимости от значения в БД? #5
Потому что строка требуется методу setViewImage.

Добавлено через 19 часов 34 минуты
Главный вопрос не в строке, а в том, какой метод перегружать, чтобы картинка нужная выбиралась.
goodi_tomsk
4 / 1 / 0
Регистрация: 12.05.2015
Сообщений: 83
02.05.2016, 22:28     Как при построении Listview выибрать картинку в зависимости от значения в БД? #6
Tsegorah, а если например сделать столбец со значениями 1,2,3. И делать проверку, если ==1 то показываем картинку №1... ?
инт в строку перевести и вперед.
Tsegorah
1 / 1 / 0
Регистрация: 02.03.2014
Сообщений: 86
02.05.2016, 22:41  [ТС]     Как при построении Listview выибрать картинку в зависимости от значения в БД? #7
А где делать проверку и выбирать картинку? В каком методе?
Frozik6k
12 / 12 / 7
Регистрация: 04.04.2016
Сообщений: 50
03.05.2016, 00:02     Как при построении Listview выибрать картинку в зависимости от значения в БД? #8
вот реализация из моей программы
Java
1
2
3
4
5
6
7
8
9
10
    @Override
    public void setViewImage(ImageView v, String value) {
        if (Integer.parseInt(value) == DB.AS_THING){
            v.setImageResource(R.drawable.thing);
        } else {
            v.setImageResource(R.drawable.box);
        }
        //super.setViewImage(v, value);
 
    }
Tsegorah
1 / 1 / 0
Регистрация: 02.03.2014
Сообщений: 86
03.05.2016, 10:39  [ТС]     Как при построении Listview выибрать картинку в зависимости от значения в БД? #9
Цитата Сообщение от Frozik6k Посмотреть сообщение
вот реализация из моей программы
У меня не срабатывает метод setViewImage.
Frozik6k
12 / 12 / 7
Регистрация: 04.04.2016
Сообщений: 50
03.05.2016, 21:46     Как при построении Listview выибрать картинку в зависимости от значения в БД? #10
Я на основе класса SimpleCursorAdapter, создал свой класс ThingSimpleCursorAdapter, в котором и переопределил метод setViewImage. Вот как выглядит код в основной активити
Java
1
2
3
4
5
6
 // Формируем столбцы сопоставления
        String[] from = new String[] { DB.COLUMN_ISBOX, DB.COLUMN_THING_NAME};
        int[] to = new int[] { R.id.ivIcon, R.id.tvNameThing};
 
        // создаем адаптер и настраиваем список
        mScAdapter = new ThingSimpleCursorAdapter(this, R.layout.item, null, from, to, 0);
R.id.ivIcon - это компонент imageView. DB.COLUMN_ISBOX - это колонка типа int, значения в которой 0 или 1. Все прекрасно работает. Раз у вас не работает, значит надо больше вашего кода показать, чтобы можно понять причину.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2016, 01:30     Как при построении Listview выибрать картинку в зависимости от значения в БД?
Еще ссылки по теме:

Добавлене View элементов в ListView в зависимости от текста Android
Android Как найти id записи в SQlite таблице при клике на кнопку расположенную в Listview item?
Android Как показать ProgressDialog при долгом построении UI?
NullPointerException при поиске ListView Android
Как победить подтормаживание при листании ViewPager со списками listview? Android

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

Или воспользуйтесь поиском по форуму:
Tsegorah
1 / 1 / 0
Регистрация: 02.03.2014
Сообщений: 86
04.05.2016, 01:30  [ТС]     Как при построении Listview выибрать картинку в зависимости от значения в БД? #11
Я решил проблему, используя класс
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
class MyViewBinder implements SimpleCursorAdapter.ViewBinder {
        @Override
        public boolean setViewValue(View v, Cursor cursor, int columnIndex) {
            Log.e("log", "====================== setViewValue started");
 
            if (v.getId() == R.id.imageView && columnIndex == 4) {//v instanceof ImageView) {
                Log.e("log", "====================== instance of imageView");
                switch (cursor.getInt(4)) {
                    case 0:
                        Log.e("log", "======================            0");
                        ((ImageView) v).setImageResource(R.drawable.neload_icon);
                        break;
                    case 2:
                        Log.e("log", "======================            2");
                        ((ImageView) v).setImageResource(R.drawable.delete_icon);
                        break;
                    default:
                        Log.e("log", "======================            default");
                        ((ImageView) v).setImageResource(R.drawable.reload_icon);
                }
                return true;
            }
            else {
                Log.e("log", "====================== other instance");
                return false;
            }
        }
    }
И конструктор адаптера
Java
1
2
3
4
5
6
    public MySimpleCursorAdapter(Context context, int layout, Cursor c, String[] from,int[] to, int flags, MyDB mdb) {
        super(context, layout, c, from, to, flags);
        db = mdb;
        MyViewBinder mvb = new MyViewBinder();
        this.setViewBinder(mvb);
    }
И после изменения базы данных, для смены картинки
Java
1
2
                cursor = db.getAllData(db_table);
                scAdapter.changeCursor(cursor);
Yandex
Объявления
04.05.2016, 01:30     Как при построении Listview выибрать картинку в зависимости от значения в БД?
Ответ Создать тему
Опции темы

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