En primer lugar, no puedo eliminar una transacción (fila) recuperada de la base de datos
La línea 61 está emitiendo el resultado de arg0.getItemAtPosition(arg2)
a Cursor
, pero el tipo de retorno probablemente sea HashMap
(como dice en la salida de Logcat). Normalmente obtienes un Cursor
de una consulta de base de datos.
Si coloca la ID de cada fila de la base de datos en el HashMap
cuando lo esté construyendo, podrá pasar esa ID a su deleteTransaction()
llama a tu onClick
evento. Entonces, necesitas
temp.put("Id", localCursor.getInt(localCursor.getColumnIndex("_id")));
en getAllTransaction()
y luego revise su onClick()
método para hacer algo como esto:
localDbCrud.open();
HashMap itemMap = (HashMap)localAdapter.getItem(arg2);
int item_id = Integer.parseInt((String)itemMap.get("Id"));
DbCrud.deleteTransaction(item_id);
localDbCrud.close();
También sugeriría cambiar el nombre de arg2
(y otros) para tener nombres más claros para que el código sea más fácil de seguir.
En segundo lugar, necesito saber cómo actualizar la vista de lista después de eliminar la entrada
Puede llamar a notifyDataSetChanged()
en su adaptador para actualizar ListView
después de haber realizado un cambio en el conjunto de datos.
EDITAR:tenga en cuenta que SimpleAdapter
está diseñado para datos estáticos, por lo que su millaje puede variar. La mejor solución es probablemente cambiar a un tipo diferente de adaptador, como ArrayAdapter
, o cree un nuevo SimpleAdapter
cada vez que cambia el conjunto de datos.