私の最初のAndroidアプリの完成に近いですが、私のアプリでListViewを供給するSQLite DBからアイテムを削除すると奇妙なバグで戦っています。アイテムが削除され、ListViewから離れて戻ってきた場合は更新されますが、リストが更新されるまでリストは更新されません。notifyDataSetChanged()を呼び出すとListViewが更新されないのはなぜですか?
私はここに問題のクラスのほとんどを掲載しました:https://gist.github.com/2025973が、ここでは、関連するコールバックは、ファイル内の行56で始めている:
builder.setPositiveButton(R.string.button_delete,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
databaseConnector.deleteSimpleDie(arg3);
storedDiceAdapter.notifyDataSetChanged();
}
});
は、私がここで間違って何をしているのですか?私はそれが何か簡単だと確信しています。私はもともと非同期で削除を行っていましたが、notifyDataSetChanged()を呼び出すことができませんでした。なぜなら、Cursorを作成したスレッドから発生する必要があったからです。
UPDATE
さて、これはかなりゲットー(私は...と思う)ですが、私はそれが最終的には、作業を持っています。誰かがこれがどんなにひどく間違っているのか教えてくれませんか?基本的には、コールバック内でCursorAdapter全体を再インスタンス化しています。それは問題を解決するが、それは私が気づいていないいくつかの負の副作用があると思う。
builder.setPositiveButton(R.string.button_delete,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
databaseConnector.deleteSimpleDie(arg3);
String[] from = new String[] { "name", "description" };
int[] to = new int[] { R.id.dice_name, R.id.dice_description };
storedDiceAdapter = new SimpleCursorAdapter(StoredDice.this,
R.layout.stored_dice_item, null, from, to);
setListAdapter(storedDiceAdapter);
}
});
http://stackoverflow.com/questions/7019517/unable-to-get-listview-to-refresh-from-database/7020582#7020582 –
私はそれを見て、それが何を持っているかはっきりしていません私の問題。私は同じ基本的な問題を見るが、実際には解決されているとは思えない。彼の最後のコメントは、まだListViewを更新していないということです。 – Utoxin
あなたはどのようなアダプターを使用していますか? – josephus