Страница 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 было очень не понятно =( а вообще спасибо)