2011-08-21 4 views
0

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

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

СОЗДАТЬ НОВЫЙ

form1

Form2

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

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

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

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

ответ

1

Когда элемент щелкнул, вы можете получить его идентификатор таким образом: Установите 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

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

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

Смежные вопросы