Получение идентификатора элемента ListView при его заполнении из базы данных - PullRequest
0 голосов
/ 21 августа 2011

Я занимаюсь разработкой приложения для Android, в котором пользователь заполняет форму, выбирая CREATE NEW в представлении списка, и форма сохраняется в базе данных SQLite и отображается в виде списка.Это так

Запуск только CREATE NEW После заполнения формы ListView будет выглядеть так:

CREATE NEW

FORM1

FORM2

Каждая форма ссылается на запись в таблице базы данных

Теперь я хочу сделать следующее.Если я нажму на форму Form1, она должна открыться для редактирования пользователем и так далее.Я использую положение списка для соответствия первичному идентификатору записи и показываю соответствующую запись

Но вся проблема возникает, когда я удаляю записи

Есть ли более элегантный способполучить идентификатор элемента ListView при его заполнении из базы данных?

Ответы [ 2 ]

1 голос
/ 21 августа 2011

Когда по элементу щелкают, вы можете получить его идентификатор следующим образом: установите OnItemClickListener для listView, а затем вы получите идентификатор:

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> av, View v, int pos, long id) 
        {
            // Do whatever you want. "id" as the id in the db.
        }
    });
0 голосов
/ 21 августа 2011

Если вы выберете все записи в вашей базе данных, я имею в виду без каких-либо условий, тогда позиция формы в запросе будет той же позицией в базе данных, но если у вас есть условие в вашем запросе, чем вы получите только позицию вашей формы внутри условного запроса. Вы упомянули о щелчке, поэтому в setOnItemClickListener() у вас есть переменная int, которая задает позицию элемента в ListView, иногда бывают случаи, когда у вас есть наполовину видимые элементы, тогда вы можете применить формулу positon = position - listView.getFirstVisiblePosition();, чтобы избежать скремблирование данных с позиции. Также в getView() вы также можете использовать ту же самую переменную int position. Я надеюсь, что это разумно.

Когда вы удаляете записи, вы можете сигнализировать ListView, чтобы снова заселить себя. Имея текущие и новые данные (те же данные за вычетом удаленной записи из адаптера), вы также можете подать (выполнить запрос на удаление этой записи) базу данных для удаления записи, если это то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...