SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
-
Metilars
- Сообщения: 12
- Зарегистрирован: 09 май 2015, 20:09
- Откуда: Славянск
Сообщение
Metilars » 09 май 2015, 20:37
Есть БД 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?
-
doter.ua
- Сообщения: 1106
- Зарегистрирован: 23 ноя 2013, 16:08
- Откуда: Ukraine
Сообщение
doter.ua » 09 май 2015, 20:54
ContactsItem.get( position ).get ...
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
-
Metilars
- Сообщения: 12
- Зарегистрирован: 09 май 2015, 20:09
- Откуда: Славянск
Сообщение
Metilars » 09 май 2015, 22:20
doter.ua писал(а):ContactsItem.get( position ).get ...
Не совсем понял, можете объяснить?
-
doter.ua
- Сообщения: 1106
- Зарегистрирован: 23 ноя 2013, 16:08
- Откуда: Ukraine
Сообщение
doter.ua » 09 май 2015, 22:40
Metilars писал(а):doter.ua писал(а):ContactsItem.get( position ).get ...
Не совсем понял, можете объяснить?
Что и куда тебе нужно передать?
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
-
Foenix
- Сообщения: 4201
- Зарегистрирован: 20 окт 2012, 12:01
Сообщение
Foenix » 09 май 2015, 22:46
в ContactItem надо создать поле _id и в конструкторе записывать его из _id базы данных.
но обычно используют курсорадаптеры
-
Metilars
- Сообщения: 12
- Зарегистрирован: 09 май 2015, 20:09
- Откуда: Славянск
Сообщение
Metilars » 09 май 2015, 22:51
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
как получить это значение в обработчике нажатия?
-
Metilars
- Сообщения: 12
- Зарегистрирован: 09 май 2015, 20:09
- Откуда: Славянск
Сообщение
Metilars » 09 май 2015, 22:56
doter.ua писал(а):
Что и куда тебе нужно передать?
мне нужно передать значение db.getInt(idColIndex) выбранного элемента в активити Contact.
тут вот передает позицию, мне значение нужно.
Код: Выделить всё
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Contact.putExtra("id", id+1+"");
startActivity(Contact);
}
-
Foenix
- Сообщения: 4201
- Зарегистрирован: 20 окт 2012, 12:01
Сообщение
Foenix » 09 май 2015, 23:06
я не пойму что ты спрашиваешь.
-
Metilars
- Сообщения: 12
- Зарегистрирован: 09 май 2015, 20:09
- Откуда: Славянск
Сообщение
Metilars » 09 май 2015, 23:26
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 выбранного элемента.
-
Metilars
- Сообщения: 12
- Зарегистрирован: 09 май 2015, 20:09
- Откуда: Славянск
Сообщение
Metilars » 09 май 2015, 23:40
Все, сам разобрался.
ContactItem p = ContactAdapter.getContactItem(position);
int ids = p.idcontact;
Спасибо всем кто откликнулся =)
-
doter.ua
- Сообщения: 1106
- Зарегистрирован: 23 ноя 2013, 16:08
- Откуда: Ukraine
Сообщение
doter.ua » 09 май 2015, 23:41
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 выбранного элемента.
Мой первый ответ верный.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
-
Metilars
- Сообщения: 12
- Зарегистрирован: 09 май 2015, 20:09
- Откуда: Славянск
Сообщение
Metilars » 09 май 2015, 23:55
doter.ua писал(а):
Мой первый ответ верный.
ну в принципе да, но для меня можно сказать только начавшего изучать Android было очень не понятно =( а вообще спасибо)