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

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

Войти
Регистрация
Восстановить пароль
 
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
#1

Оптимизация записи в БД из ListView - Программирование Android

11.04.2014, 11:03. Просмотров 587. Ответов 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, и вот долго записывает в БД. Думаю как то запоминать только измененные чекбоксы, но может есть еще другие варианты? Т.е. как записывать только измененные чекбоксы и не трогать неизмененные.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
11.04.2014, 12:05     Оптимизация записи в БД из ListView #2
Цитата Сообщение от Rube Посмотреть сообщение
Т.е. как записывать только измененные чекбоксы и не трогать неизмененные.
По индексу

Добавлено через 2 минуты
ты вообще на какое событие опираешься?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
11.04.2014, 12:16  [ТС]     Оптимизация записи в БД из ListView #3
Цитата Сообщение от kirawa Посмотреть сообщение
ты вообще на какое событие опираешься?
Вот
Цитата Сообщение от Rube Посмотреть сообщение
нажимаю кнопку "Запомнить"
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
11.04.2014, 12:29     Оптимизация записи в БД из ListView #4
ну в оперативке работай, создай 2 коллекции храни id и сheck ну и сравнивай поля и уже сохраняй только изменившиеся, А так я бы опирался на событие OnItemClick
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
11.04.2014, 12:39  [ТС]     Оптимизация записи в БД из ListView #5
Цитата Сообщение от kirawa Посмотреть сообщение
создай 2 коллекции храни id и сheck ну и сравнивай поля и уже сохраняй только изменившиеся
Это да, первая мысль была такая, думал может еще что подскажут.
Цитата Сообщение от kirawa Посмотреть сообщение
А так я бы опирался на событие OnItemClick
Это логично, тоже думал, но боюсь будут видны задержки интерфейса, хотя мысль пришла, можно в AssynkTask делать.
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
11.04.2014, 13:08     Оптимизация записи в БД из ListView #6
не будет ни каких задержек, ты шо этож андроид а не тамагоч там какойнить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2014, 00:03     Оптимизация записи в БД из ListView
Еще ссылки по теме:
Оптимизация приложения Android
Оптимизация AVD Android
Оптимизация ListView Delphi
ListView и правильность\оптимизация кода C++ Builder
C# WPF Добавить записи в ListView

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

Или воспользуйтесь поиском по форуму:
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
12.04.2014, 00:03  [ТС]     Оптимизация записи в БД из ListView #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() + "'")); 
    }
});
Yandex
Объявления
12.04.2014, 00:03     Оптимизация записи в БД из ListView
Ответ Создать тему
Опции темы

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