SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Excluir consulta e atualizar no ListView no Android (sqlite)


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.