Desidero ottenere il record corrente di un cursore, anziché solo l'ID, in modo da poter manipolare un menu di scelta rapida.Come ottenere i dati dal cursore in ContextMenu
ho visto questo esempio here che mostra come ottenere l'ID:
@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));
}
Questo è grande, perché mi permette di ottenere l'ID del database SQLite appropriata del menu contestuale cliccato che mi permetterà di scrivere una funzione per fare una ricerca. Ma sicuramente posso solo riutilizzare il cursore corrente?
Ho provato a fare questo:
Cursor c = (Cursor) this.getListAdapter().getItem((int) info.id);
String itemPriority = c.getInt(1);
Log.v(TAG, "Current item:" + itemPriority);
ma la linea del cursore sembra tornare solo lo schema del database invece del record che sto cercando.
Qualcuno potrebbe per favore versare un po 'di luce.
EDIT: Grazie a @azgolfer ho trovato la soluzione. Io uso un metodo fillData() per compilare l'adattatore. Normalmente questo è dichiarato senza variabili. Ho dovuto ridefinire questo metodo con una variabile di campo. La parte rilevante del codice per rendere l'adattatore curstor visibile in onContextItemSelected è qui:
private void fillData() {
Cursor itemsCursor = mDbHelper.fetchAllItemsFilter(mListId, mStatusFilter);
startManagingCursor(itemsCursor);
mItemAdaptor = new ItemAdapter(this, itemsCursor);
this.setListAdapter(mItemAdaptor);
}
Che cosa si intende per il riutilizzo? E 'c.getInt (1)' sta ottenendo qualunque cosa sia l'indice 1 di quella riga del cursore. Quindi prendi i record dagli altri indici di quella riga dei cursori, come 'c.getString (2)'. A meno che non stiate provando a fare qualcos'altro. – Andy
Scusa, suppongo che il riutilizzo del lavoro debba essere "uso". Il punto però è che il cursore non restituisce dati, solo lo schema. –
Potresti per favore stampare ciò che è mostrato nell 'itemPriority'? – Andy