Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
1

Оптимизация записи в БД из ListView

11.04.2014, 11:03. Просмотров 635. Ответов 6
Метки нет (Все метки)

Есть ListView с текстом и CheckBox, при загрузке приложения значения ListView заполняются из БД.
_idNameCheck
1Москва1
2Казань0
3Ростов0
4Минск1
5Дели1
Затем тапом снимаю/отмечаю некоторые CheckBox (Москва, Казань, Минск) и нажимаю кнопку "Запомнить"
Запоминаю отмеченные через getChekedItemPosition()
Циклом прохожу по всему ListView и каждую строку записываю в БД:
SQL
1
db.execSQL(String.format(UPDATE ... SET ... WHERE))
Получается:
_idNameCheck
1Москва0
2Казань1
3Ростов0
4Минск0
5Дели1

Записей порядка 300, и вот долго записывает в БД. Думаю как то запоминать только измененные чекбоксы, но может есть еще другие варианты? Т.е. как записывать только измененные чекбоксы и не трогать неизмененные.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2014, 11:03
Ответы с готовыми решениями:

Отображение записи ListView
Делаю приложение для заметок. Заметки сохраняются в файле. Механизм открытия...

Обновление ListView после добавления записи
Выбираю записи из БД и вывожу их в ListView. В этом же активити есть кнопка...

Как отобразить в диалог окне информацию с БД о записи, на которую кликнул в ListView?
Помогите пожалуйста! Имею Листвью в который выводятся записи из БД через...

Как найти id записи в SQlite таблице при клике на кнопку расположенную в Listview item?
привет ! подскажите пожалуйста решение((( Кейс: у меня есть листвью ,...

ListView. После добавления кнопки перестал быть доступен сам ListView
Кастомизировал ListView с помощью нескольких TextView. Но после того, как...

6
kirawa
35 / 35 / 2
Регистрация: 12.11.2013
Сообщений: 345
11.04.2014, 12:05 2
Цитата Сообщение от Rube Посмотреть сообщение
Т.е. как записывать только измененные чекбоксы и не трогать неизмененные.
По индексу

Добавлено через 2 минуты
ты вообще на какое событие опираешься?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
11.04.2014, 12:16  [ТС] 3
Цитата Сообщение от kirawa Посмотреть сообщение
ты вообще на какое событие опираешься?
Вот
Цитата Сообщение от Rube Посмотреть сообщение
нажимаю кнопку "Запомнить"
0
kirawa
35 / 35 / 2
Регистрация: 12.11.2013
Сообщений: 345
11.04.2014, 12:29 4
ну в оперативке работай, создай 2 коллекции храни id и сheck ну и сравнивай поля и уже сохраняй только изменившиеся, А так я бы опирался на событие OnItemClick
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
11.04.2014, 12:39  [ТС] 5
Цитата Сообщение от kirawa Посмотреть сообщение
создай 2 коллекции храни id и сheck ну и сравнивай поля и уже сохраняй только изменившиеся
Это да, первая мысль была такая, думал может еще что подскажут.
Цитата Сообщение от kirawa Посмотреть сообщение
А так я бы опирался на событие OnItemClick
Это логично, тоже думал, но боюсь будут видны задержки интерфейса, хотя мысль пришла, можно в AssynkTask делать.
0
kirawa
35 / 35 / 2
Регистрация: 12.11.2013
Сообщений: 345
11.04.2014, 13:08 6
не будет ни каких задержек, ты шо этож андроид а не тамагоч там какойнить
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
12.04.2014, 00:03  [ТС] 7
Цитата Сообщение от kirawa Посмотреть сообщение
не будет ни каких задержек
проверю вечером на практике, если получится, дам в репу

Добавлено через 10 часов 12 минут
Работает быстро, спасибо.
Java
1
2
3
4
5
6
7
8
9
10
choiceList.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View v, final int position, long id) {
        int re = choiceList.isItemChecked(position) == true ? 1 : 0; // значение чекбокса
        DB dbb = new DB(ChList.this);
        SQLiteDatabase db = dbb.getWritableDatabase();
        db.execSQL(String.format("UPDATE " + DB.NAME + " SET " + DB.CHECK
            + " = " + re + " WHERE " + DB.NAME + " = '" + choiceList.getItemAtPosition(position).toString() + "'")); 
    }
});
0
12.04.2014, 00:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2014, 00:03

Listview вывод данных и переход по нажатию на другой Listview SQLite
Доброго извините за название темы, долго не мог сформировать название, В общем...

Данные из SQlite в ListView, обработка события ListView
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные...

Передача данных из ListView в другой Activity в ListView
Добрый день. Пытаюсь разобраться с передачей данных с ListView, но выходит что...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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