Удаление записей из БД (SQLite) по элементам в spinner'e

Рейтинг: 1Ответов: 1Опубликовано: 22.10.2014

Доброго времени суток!

Пишу приложение. Во фрагменте нужно выводить записи из колонки таблицы БД в спиннер (Spinner). Также добавляю записи в эту таблицу с автообновлением спинера. Все это работает. Но встал вопрос удаления и корректировки записей в БД по требованию.

К примеру, в БД и соответственно в спинере есть 5 записей. 2-ю запись в спинере (#1) нужно обновить. Я выбираю эту запись, жму кнопку и через AlertDialog ввожу и записываю новые значения. Данный пример работает, если обращаться по _id в таблице, но записи же могут быть удалены пользователем. Поэтому _id будут такими: 1,2, 4, 6 и так далее. То есть будут пропуски, что не даст возможности корректной работы изменения по id в спинере.

Как решить данный вопрос, чтобы по выбранному элементу в спинере был отредактирован или удален элемент в таблице БД? Первые шаги я сделал - получил String значение элемента в спинере. Далее все по коду ниже.

public void onClick_NewTow_EditButton() {
/* 1. Получить значение со spiner'a */
String spinSelectedItem = spinner.getSelectedItem().toString();
Integer spinSelectedItemId = spinner.getSelectedItemPosition() + 1;
Log.v(LOG_TAG, "select: " + spinSelectedItem + '\n' + "selectItemPos: "
        + spinner.getSelectedItemPosition());

ContentValues values = new ContentValues();
values.put(DataBaseClass.TOW_COL_PR, 12);
values.put(DataBaseClass.TOW_COL_TOW, "проверка2");

sqdb.update(DataBaseClass.TOW_PRICE_TABLE, values,
        DataBaseClass.TOW_COL_ID + " = ?",
        new String[]{String.valueOf(spinSelectedItemId)});

spinnerUpdateMethode(); // Это мой собственный метод, который обновляет список в спинере.

По нему вопросов нет, работает хорошо.

В итоге это работает как-то криво - обновляется не та запись.

P.S.: сделал также сортировку в спинере. Сортирую в курсоре, а потом через ArrayAdapter в spinner.

Ответы

Ответов пока нет.