Quiero obtener el registro actual de un cursor, en lugar de solo el ID, para poder manipular un menú contextual.Cómo obtener datos de Cursor en ContextMenu
vi este ejemplo here que muestra cómo obtener el 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));
}
Esto es muy bueno ya que me permite obtener el identificador de base de datos SQLite apropiada del menú contextual de clic que permitirá que escriba una función para hacer una búsqueda. Pero seguramente puedo reutilizar el cursor actual?
He intentado hacer esto:
Cursor c = (Cursor) this.getListAdapter().getItem((int) info.id);
String itemPriority = c.getInt(1);
Log.v(TAG, "Current item:" + itemPriority);
pero la línea del cursor parece devolver sólo el esquema de la base de datos en lugar del registro que busco.
Podría alguien por favor arrojar algo de luz.
EDITAR: Gracias a @azgolfer he encontrado la solución. Utilizo un método fillData() para rellenar el adaptador. Normalmente esto se declara sin variables. Tuve que redefinir este método con una variable de campo. La parte pertinente del código para hacer el adaptador curstor visible en onContextItemSelected está aquí:
private void fillData() {
Cursor itemsCursor = mDbHelper.fetchAllItemsFilter(mListId, mStatusFilter);
startManagingCursor(itemsCursor);
mItemAdaptor = new ItemAdapter(this, itemsCursor);
this.setListAdapter(mItemAdaptor);
}
¿Qué quiere decir por la reutilización? Y 'c.getInt (1)' obtiene lo que sea el índice 1 de esa fila de cursor. Así que solo obtenga los registros de los otros índices de esa fila de cursores, como 'c.getString (2)'. A menos que estés tratando de hacer otra cosa. – Andy
Lo siento, creo que la reutilización del trabajo debe ser "uso". El punto es que el cursor no devuelve datos, solo el esquema. –
¿Podría imprimir lo que se muestra en 'itemPriority'? – Andy