2011-07-05 15 views
0

Androidで問題が発生しています。リストビューが更新されていないアダプタを設定しています。 これは、私は、データベースから1つのノートを削除して使用します。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); 
} 

コード内のいずれかの問題がありますか?

答えて

0

変更が表示されるように、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; 
} 

また、(あなたはすでにそれを行っていなかった場合)

+0

onPause()それを閉じることを忘れないでください実際に私は、かなり間抜けでした私は1つだけのメモを持っていた、それを削除、それは上に感じた: – JLFerrari

+0

if(c.getCount()== 0) リターン; その後、アダプタを更新しないでください....私の愚痴はawsomeです。 ; D しかし、あなたの答えは多くの助けになりました! = D – JLFerrari

関連する問題