3

の完全な機能が表示されませんnotifyDataSetChanged()。作業の名前を変更/変更しますが、削除/削除はしません。編集: 4.1.1 電話とエミュレーター API 16 (4.1) でテストしています。

mylistfragment私のカスタムListFragmentです。

myadapterMyObject を使用した標準の ArrayAdapter です。

mylistMyObject の ArrayList です。

  1. 作業中の名前変更操作:

    // rename the db item
    mylistfragment.mylist.get(i).name = "new name";
    (mylistfragment.myadapter).notifyDataSetChanged(); // this works
    

    リストビューが正しく更新され、「新しい名前」が表示されます。

  2. 機能しない削除操作:

    // delete from db
    mylistfragment.mylist.get(i).name = "DELETED";
    mylistfragment.mylist.remove(i);
    (mylistfragment.myadapter).notifyDataSetChanged(); // this does NOT work
    

    アイテムの名前が「DELETED」に変更されていることがわかります。これはもちろん、アイテムが消えるのを見たことがないことを意味します。

私のArrayListは、フラグメントが作成されたときにデータベースから構築されるため、フラグメントを再作成するとアイテムはなくなります。ただし、ArrayAdapterにビューを更新するように指示すると、アイテムが消えてしまいます。

誰かがこの問題に遭遇したことがありますか、または配列リストからの削除が機能するのに ListView に反映されない理由について考えたことはありますか?

4

0 に答える 0