Страница 1 из 1
Идентификация ListView + SQLite
Добавлено: 09 май 2015, 20:37
Metilars
Есть БД sqlite, в ней таблица с полем _id (автоинкримент).
ListView заполняю так:
Код: Выделить всё
void fillData() {
do {
ContactsItem.add(new ContactItem(db.getString(fioColIndex),db.getString(phoneColIndex),
R.mipmap.ic_launcher, db.getInt(idColIndex)));
} while (db.moveToNext());
}
db.getInt(idColIndex) - id который мне нужен, нигде не выводится просто передается.
Вот нажатие на пункт:
Код: Выделить всё
ContaсtsList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Contact.putExtra("id", id+1+"");
startActivity(Contact);
}
});
Тут передается нажатая позиция, но если из базы удалить запись то _id будет не по порядку, и не будет равняться id.
Как передать правильный id?
Re: Идентификация ListView + SQLite
Добавлено: 09 май 2015, 20:54
doter.ua
ContactsItem.get( position ).get ...
Re: Идентификация ListView + SQLite
Добавлено: 09 май 2015, 22:20
Metilars
doter.ua писал(а):ContactsItem.get( position ).get ...
Не совсем понял, можете объяснить?
Re: Идентификация ListView + SQLite
Добавлено: 09 май 2015, 22:40
doter.ua
Metilars писал(а):doter.ua писал(а):ContactsItem.get( position ).get ...
Не совсем понял, можете объяснить?
Что и куда тебе нужно передать?
Re: Идентификация ListView + SQLite
Добавлено: 09 май 2015, 22:46
Foenix
в ContactItem надо создать поле _id и в конструкторе записывать его из _id базы данных.
но обычно используют курсорадаптеры
Re: Идентификация ListView + SQLite
Добавлено: 09 май 2015, 22:51
Metilars
Foenix писал(а):в ContactItem надо создать поле _id и в конструкторе записывать его из _id базы данных.
Так вот он записывает
Код: Выделить всё
ContactsItem.add(new ContactItem(db.getString(fioColIndex),db.getString(phoneColIndex),
R.mipmap.ic_launcher, db.getInt(idColIndex)));
_id из базы это
db.getInt(idColIndex)
в ContactsItem он прописан как
idcontact
как получить это значение в обработчике нажатия?
Re: Идентификация ListView + SQLite
Добавлено: 09 май 2015, 22:56
Metilars
doter.ua писал(а):
Что и куда тебе нужно передать?
мне нужно передать значение db.getInt(idColIndex) выбранного элемента в активити Contact.
тут вот передает позицию, мне значение нужно.
Код: Выделить всё
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Contact.putExtra("id", id+1+"");
startActivity(Contact);
}
Re: Идентификация ListView + SQLite
Добавлено: 09 май 2015, 23:06
Foenix
я не пойму что ты спрашиваешь.
Re: Идентификация ListView + SQLite
Добавлено: 09 май 2015, 23:26
Metilars
Foenix писал(а):я не пойму что ты спрашиваешь.
есть бд, в ней есть куча полей, есть поле _id.
Я заполняю ListView с помощью BaseAdapter.
Код: Выделить всё
ContactAdapter = new ContactAdapter(this, ContactsItem);
ContactsItem.add(new ContactItem(s1,s2,s3,_id));
ListView ContaсtsList = (ListView) findViewById(R.id.ContaсtsList);
ContaсtsList.setAdapter(ContactAdapter);
как при нажатии на ListView передать значение _id выбранного элемента.
Re: Идентификация ListView + SQLite
Добавлено: 09 май 2015, 23:40
Metilars
Все, сам разобрался.
ContactItem p = ContactAdapter.getContactItem(position);
int ids = p.idcontact;
Спасибо всем кто откликнулся =)
Re: Идентификация ListView + SQLite
Добавлено: 09 май 2015, 23:41
doter.ua
Metilars писал(а):Foenix писал(а):я не пойму что ты спрашиваешь.
есть бд, в ней есть куча полей, есть поле _id.
Я заполняю ListView с помощью BaseAdapter.
Код: Выделить всё
ContactAdapter = new ContactAdapter(this, ContactsItem);
ContactsItem.add(new ContactItem(s1,s2,s3,_id));
ListView ContaсtsList = (ListView) findViewById(R.id.ContaсtsList);
ContaсtsList.setAdapter(ContactAdapter);
как при нажатии на ListView передать значение _id выбранного элемента.
Мой первый ответ верный.
Re: Идентификация ListView + SQLite
Добавлено: 09 май 2015, 23:55
Metilars
doter.ua писал(а):
Мой первый ответ верный.
ну в принципе да, но для меня можно сказать только начавшего изучать Android было очень не понятно =( а вообще спасибо)