SQlite, SimpleAdapter и получение id записи элемента

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
Eserchik
Сообщения: 14
Зарегистрирован: 04 авг 2012, 13:29

SQlite, SimpleAdapter и получение id записи элемента

Сообщение Eserchik » 05 окт 2012, 15:28

Подскажите как получить id записи элемента базы данных при выборе элемента из списка?
Вывожу список из БД с использованием SimpleAdapter, при нажатии на элементе списка появляется AlertDialog с предложением удалить элемент, а id элемента не знаю как получить.

Код: Выделить всё

private ArrayList <HashMap<String, Object>> myBooks;
private static final String BOOKKEY = "bookname";
private static final String IMGKEY = "iconfromraw"; 

Вывод из БД:

Код: Выделить всё

 c = db.query("group", null, null, null, null, null, null);

        if (c.moveToFirst()) {
        	SQliteEmpty.setVisibility(View.GONE);
       
          int idColIndex = c.getColumnIndex("id");
          int nameColIndex = c.getColumnIndex("name");


          do {
         
            
            hm = new HashMap<String, Object>();
            hm.put(BOOKKEY, "name" + c.getString(nameColIndex)+"id"+c.getInt(idColIndex)); 
            hm.put(IMGKEY, R.drawable.icon_exercise); 
            myBooks.add(hm);                            
            
    
          } while (c.moveToNext());
        } 
        else
        {
       c.close();
        }

Адаптер:

Код: Выделить всё

SimpleAdapter adapter = new SimpleAdapter(this, 
                myBooks, 
                R.layout.list_item, new String[]{
                BOOKKEY, 
                IMGKEY        
                }, new int[]{   
                R.id.text1,      
                R.id.img});

listView.setAdapter(adapter); 
listView.setChoiceMode(ListView.CHDE_SINGLE);

Действие которое нужно выполнить при нажатии на элемент списка:

Код: Выделить всё

listView.setOnItemLongClickListener(new OnItemLongClickListener(){

	public boolean onItemLongClick(AdapterView<?> parent, View view,
	        int position, long id) {

                Как здесь получить id элемента из БД?
		showDialog(IDD_DELETE_ITEM);//Запускаем AlertDialog
		
                return false;
	}
	
});

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: SQlite, SimpleAdapter и получение id записи элемента

Сообщение rezak90 » 05 окт 2012, 18:19

Код: Выделить всё

listView.setOnItemLongClickListener(new OnItemLongClickListener(){
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                showDialog(IDD_DELETE_ITEM);//Запускаем AlertDialog
                return false;
        }
});
id и есть _id из БД.
R.id.team
Политика на форуме запрещена

Eserchik
Сообщения: 14
Зарегистрирован: 04 авг 2012, 13:29

Re: SQlite, SimpleAdapter и получение id записи элемента

Сообщение Eserchik » 05 окт 2012, 22:30

Нет это id порядковый номер в списке и не соответствует id в базе данных.
Это скорее вcего связано с чем, что адаптер SimpleAdapter, а не SimpleCursorAdapter

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: SQlite, SimpleAdapter и получение id записи элемента

Сообщение rezak90 » 05 окт 2012, 23:05

конечно из-за этого, если используется бд то необходимо использовать SimpleCursorAdapter так как в нём используется курсор который делает все необходимые манипуляции с бд, в том числе буде возвращать айди из бд
R.id.team
Политика на форуме запрещена

Eserchik
Сообщения: 14
Зарегистрирован: 04 авг 2012, 13:29

Re: SQlite, SimpleAdapter и получение id записи элемента

Сообщение Eserchik » 08 окт 2012, 12:57

Спасибо

dil_android
Сообщения: 103
Зарегистрирован: 10 сен 2012, 11:58

Re: SQlite, SimpleAdapter и получение id записи элемента

Сообщение dil_android » 15 окт 2012, 16:06

Здравствуйте,

Существуют ли какие-нибудь программы или плагины NetBeans для работы с SQLite под андроид. Если да, то поделитесь опытом использования. Прежде чем загружать хочу узнать насколько эффективен такой подход.

Спасибо

Ответить