Проблема с представлением списка Android - PullRequest
0 голосов
/ 05 июля 2011

У меня проблема с Android, когда я устанавливаю адаптер, список не обновляется.Это я использую, чтобы удалить одну заметку из базы данных:

listaNotas.setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int arg2, final long id) {
            AlertDialog.Builder dialogo = new AlertDialog.Builder(Main.this);
            dialogo.setTitle("Confirmação");
            dialogo.setMessage("Deseja mesmo deletar a nota?");
            dialogo.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface arg0, int arg1) {
                    db.delete("Notas", "_id=?", (new String[]{String.valueOf(id)}));
                    Toast.makeText(Main.this, "Nota deletada com sucesso!", 5).show();
                    atualizaNota();
                    return;
                }
            });
            dialogo.setNegativeButton("Não", null);
            dialogo.show();
            return false;
        }
    });

, и это обновления адаптера:

public void atualizaNota() {
    Cursor c = db.query("Notas", (new String[]{"_id", "Nota"}), "fgCompromisso=?", (new String[]{"0"}), null, null, "_id DESC");
    if (c.getCount()==0)
        return;
    String[] from = {"Nota"};
    int[] to = {R.id.edDescNota};
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(Main.this, R.layout.layoutlistanota, c, from, to);
    listaNotas.setAdapter(adapter);
}

Есть ли какие-либо проблемы в коде?

1 Ответ

0 голосов
/ 05 июля 2011

Вы должны вызвать requery() к вашему курсору, чтобы изменения были видны.Просто объявите курсор как поле экземпляра и вызовите его после удаления, как:

public void onClick(DialogInterface arg0, int arg1) {
    db.delete("Notas", "_id=?", (new String[]{String.valueOf(id)}));
    c.requery(); // This is all you need
    Toast.makeText(Main.this, "Nota deletada com sucesso!", 5).show();
    atualizaNota();
    return;
}

Кроме того, не забудьте закрыть его onPause() (если вы этого еще не сделали)

...