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

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

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

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

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

Я использую SimpleCursorAdapter. У меня в БД примерно 1к строк. Я хочу хранить в поле таблицы не всю картинку целиком, а только значение, в зависимости от которого будет выбираться одна из 3х картинок.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2016, 18:05     Как при построении Listview выибрать картинку в зависимости от значения в БД?
Посмотрите здесь:
Android Как показать ProgressDialog при долгом построении UI?
Сохранить измененные значения EditText в ListView при прокрутке Android
Android ListView: сбивается содержимое ImageView элемента при скроллинге + как сделать выделение пункта списка при нажатии?
Добавлене View элементов в ListView в зависимости от текста Android
Как победить подтормаживание при листании ViewPager со списками listview? Android
Android Как при нажатии на пункт ListView перейти на другую форму
Intellij Idea 13, ошибка при построении проекта : Unable to execute DX Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Сообщений: 89
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
Сообщений: 89
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
Сообщений: 89
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
Сообщений: 89
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 выибрать картинку в зависимости от значения в БД?
Еще ссылки по теме:
Значения в ListView Android
Android При клики в BaseAdapter меняется массив строк, как пересоздать ListView с новым массивом?
Android Как найти id записи в SQlite таблице при клике на кнопку расположенную в Listview item?
Android ImageView, как наложить картинку на картинку?
Android ListView ошибка при прокручивании

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

Или воспользуйтесь поиском по форуму:
Tsegorah
1 / 1 / 0
Регистрация: 02.03.2014
Сообщений: 89
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