したがって、カスタム オブジェクトの ArrayList と、ListView を介してコンテンツを表示するためのアダプターがあります。ListView で個別のオブジェクトをクリックすると、小さなアニメーションが展開され、いくつかの追加情報が表示されます。この動作は ArrayAdapter で定義されています (createView() で直接使用すると、アニメーションが思いどおりに動作しなかったためです)。
リストビュー要素の小さな画像 (X- で削除) をクリックすると、アラート ダイアログが表示され、そのアイテムを本当に削除するかどうか尋ねられます。[はい] をクリックすると、arraylist から削除されますが、notifyDataSetChanged(); アダプターを更新せず、フラグメントを非表示にしたことがなく、アラートが発生しただけなので、onResumeまたは同様のものが呼び出されることはありません。
これは私のArrayAdapterの一部である大まかなコードです:
deleteIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
ArrayList<Book> XYZ = sharedFunctions.loadSortedArrayList(getContext());
XYZ.remove(position);
sharedFunctions.saveArrayList(context, XYZ);
notifyDataSetChanged();
break;
case DialogInterface.BUTTON_NEGATIVE:
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("BLABLA").setNegativeButton("Cancel", dialogClickListener).setPositiveButton("Confirm", dialogClickListener).show();
}
});
では、データが変更されたことを Fragment (タブ) に伝えるにはどうすればよいでしょうか?
編集:したがって、以下の回答は技術的には正しいと思いますが、単にこれをすべて間違っていることがわかりました。アダプターの構築に使用された ArrayList からアイテムを削除するのではなく、ArrayList (SharedPreferences にロード/保存された) からアイテムを削除しました。愚かな間違いです。そこからも削除すると、notifyDataSetChanged() が機能しました。助けてくれてありがとう。-- (ここではかなり新しいので、質問を削除する必要があるかどうかはわかりませんが、今のところこのままにしておきます)。