Идентификация ListView + SQLite

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Закрыто
Аватара пользователя
Metilars
Сообщения: 12
Зарегистрирован: 09 май 2015, 20:09
Откуда: Славянск

Идентификация ListView + SQLite

Сообщение 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

Re: Идентификация ListView + SQLite

Сообщение doter.ua » 09 май 2015, 20:54

ContactsItem.get( position ).get ...
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
Metilars
Сообщения: 12
Зарегистрирован: 09 май 2015, 20:09
Откуда: Славянск

Re: Идентификация ListView + SQLite

Сообщение Metilars » 09 май 2015, 22:20

doter.ua писал(а):ContactsItem.get( position ).get ...
Не совсем понял, можете объяснить?

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Идентификация ListView + SQLite

Сообщение doter.ua » 09 май 2015, 22:40

Metilars писал(а):
doter.ua писал(а):ContactsItem.get( position ).get ...
Не совсем понял, можете объяснить?
Что и куда тебе нужно передать?
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Идентификация ListView + SQLite

Сообщение Foenix » 09 май 2015, 22:46

в ContactItem надо создать поле _id и в конструкторе записывать его из _id базы данных.

но обычно используют курсорадаптеры
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Metilars
Сообщения: 12
Зарегистрирован: 09 май 2015, 20:09
Откуда: Славянск

Re: Идентификация ListView + SQLite

Сообщение 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
Откуда: Славянск

Re: Идентификация ListView + SQLite

Сообщение 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

Re: Идентификация ListView + SQLite

Сообщение Foenix » 09 май 2015, 23:06

я не пойму что ты спрашиваешь.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Metilars
Сообщения: 12
Зарегистрирован: 09 май 2015, 20:09
Откуда: Славянск

Re: Идентификация ListView + SQLite

Сообщение 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
Откуда: Славянск

Re: Идентификация ListView + SQLite

Сообщение Metilars » 09 май 2015, 23:40

Все, сам разобрался.
ContactItem p = ContactAdapter.getContactItem(position);
int ids = p.idcontact;
Спасибо всем кто откликнулся =)

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Идентификация ListView + SQLite

Сообщение 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
Откуда: Славянск

Re: Идентификация ListView + SQLite

Сообщение Metilars » 09 май 2015, 23:55

doter.ua писал(а): Мой первый ответ верный.
ну в принципе да, но для меня можно сказать только начавшего изучать Android было очень не понятно =( а вообще спасибо)

Закрыто