の完全な機能が表示されませんnotifyDataSetChanged()
。作業の名前を変更/変更しますが、削除/削除はしません。編集: 4.1.1 電話とエミュレーター API 16 (4.1) でテストしています。
mylistfragment
私のカスタムListFragmentです。
myadapter
MyObject を使用した標準の ArrayAdapter です。
mylist
MyObject の ArrayList です。
作業中の名前変更操作:
// rename the db item mylistfragment.mylist.get(i).name = "new name"; (mylistfragment.myadapter).notifyDataSetChanged(); // this works
リストビューが正しく更新され、「新しい名前」が表示されます。
機能しない削除操作:
// delete from db mylistfragment.mylist.get(i).name = "DELETED"; mylistfragment.mylist.remove(i); (mylistfragment.myadapter).notifyDataSetChanged(); // this does NOT work
アイテムの名前が「DELETED」に変更されていることがわかります。これはもちろん、アイテムが消えるのを見たことがないことを意味します。
私のArrayListは、フラグメントが作成されたときにデータベースから構築されるため、フラグメントを再作成するとアイテムはなくなります。ただし、ArrayAdapterにビューを更新するように指示すると、アイテムが消えてしまいます。
誰かがこの問題に遭遇したことがありますか、または配列リストからの削除が機能するのに ListView に反映されない理由について考えたことはありますか?