Em primeiro lugar, não consigo excluir uma transação (linha) recuperada do banco de dados
A linha 61 está lançando o resultado de
arg0.getItemAtPosition(arg2)
para Cursor
, mas o tipo de retorno provavelmente é HashMap
(como diz na saída do Logcat). Normalmente você recebe um Cursor
a partir de uma consulta de banco de dados. Se você colocar o ID de cada linha do banco de dados no
HashMap
ao construí-lo, você poderá passar esse ID para seu deleteTransaction()
chame no seu onClick
evento. Então, você precisa temp.put("Id", localCursor.getInt(localCursor.getColumnIndex("_id")));
em
getAllTransaction()
e revise seu onClick()
método para fazer algo assim:localDbCrud.open();
HashMap itemMap = (HashMap)localAdapter.getItem(arg2);
int item_id = Integer.parseInt((String)itemMap.get("Id"));
DbCrud.deleteTransaction(item_id);
localDbCrud.close();
Também sugiro renomear
arg2
(e outros) para ter nomes mais claros para que o código seja mais fácil de seguir.
Em segundo lugar, preciso saber como atualizar o listview depois de excluir a entrada
Você pode chamar
notifyDataSetChanged()
em seu adaptador para atualizar o ListView
depois de fazer uma alteração no conjunto de dados. EDIT:Observe que
SimpleAdapter
destina-se a dados estáticos, portanto, sua milhagem pode variar. A melhor solução é provavelmente mudar para um tipo diferente de adaptador, como ArrayAdapter
, ou crie um novo SimpleAdapter
toda vez que você alterar o conjunto de dados.