デバイス構成の変更 (言語、向きなどの変更) 後にいくつかのテストを行っていますが、この後、「notifyDataSetChanged()」メソッドが機能していないことに気付きました。
アクション例:
削除、保存などのアクションを実行するたびに updateList() を呼び出しています。ユーザーが削除ボタンをクリックすると、「削除してもよろしいですか?」という DialogFragment が表示され、向きを変更すると、または言語、またはデバイスの構成を選択し、ダイアログで [はい] をクリックすると、データは削除されますが、リストは更新されません。アクティビティを終了してから、戻って変更を確認する必要があります。
ブックアダプター:
public void updateList(ArrayList<Book> books) {
bookList = books;
notifyDataSetChanged();
}
構成変更後に機能させるにはどうすればよいですか?
編集:
BookAdapter コンストラクター:
public BookAdapter(Context c, ArrayList<Book> books) {
context = c;
bookList = books
bookDAO = BookDAO.getInstance(context);
}
ブックフラグメント:
public class BookFragment extends Fragment {
private BookDAO bookDAO;
private BookAdapter bookAdapter;
private ListView listBook;
private View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
bookDAO = bookDAO.getInstance(getActivity());
view = inflater.inflate(R.layout.book_tab, container, false);
ArrayList<Book> listBook = null;
try {
llistBook = bookDAO.getAll();
} catch (Exception e) {
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show();
return view;
}
bookAdapter = new BookAdapter(getActivity(), listBook);
listBook = (ListView)view.findViewById(R.id.listBook);
listBook.setAdapter(bookAdapter);
return view;
}
}