Chcę uzyskać bieżący zapis kursora, zamiast tylko identyfikatora, aby móc manipulować menu kontekstowym.Jak uzyskać dane z kursora do ContextMenu
Widziałem ten przykład here które opisują, w jaki sposób uzyskać identyfikator:
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case DELETE_ID:
AdapterView.AdapterContextMenuInfo info=
(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
delete(info.id);
return(true);
}
return(super.onOptionsItemSelected(item));
}
To jest wielki, ponieważ pozwala mi uzyskać odpowiedni identyfikator bazy danych SQLite z klikniętego menu kontekstowego, które pozwoli mi pisać funkcja do wyszukiwania. Ale na pewno mogę po prostu ponownie użyć obecnego kursora?
Próbowałem w ten sposób:
Cursor c = (Cursor) this.getListAdapter().getItem((int) info.id);
String itemPriority = c.getInt(1);
Log.v(TAG, "Current item:" + itemPriority);
ale linia kursora wydaje się wrócić tylko schematu bazy danych zamiast zapisu jestem po.
Czy ktoś mógłby rzucić trochę światła.
EDYCJA: Dzięki @azgolfer znalazłem rozwiązanie. Używam metody fillData() do zapełnienia adaptera. Zwykle jest to zadeklarowane bez zmiennych. Musiałem przedefiniować tę metodę za pomocą zmiennej terenowej. Odpowiedni fragment kodu do uczynienia adapter curstor widoczny w onContextItemSelected jest tutaj:
private void fillData() {
Cursor itemsCursor = mDbHelper.fetchAllItemsFilter(mListId, mStatusFilter);
startManagingCursor(itemsCursor);
mItemAdaptor = new ItemAdapter(this, itemsCursor);
this.setListAdapter(mItemAdaptor);
}
Co masz na myśli ponownego użycia? Natomiast 'c.getInt (1)' pobiera wszystko, co jest indeksem 1 tego rzędu kursora. Po prostu pobierzmy rekordy z innych indeksów tego wiersza kursorów, np. 'C.getString (2)'. Chyba, że próbujesz zrobić coś innego. – Andy
Przepraszam Zgaduję, że ponowne wykorzystanie pracy powinno być "używać". Chodzi o to, że kursor nie zwraca danych, tylko schemat. –
Czy możesz wydrukować zawartość "itemPriority"? – Andy