2 つのフラグメントを持つ ViewPager があります。最初のものにはボタン (メニュー) があり、それらはさまざまなカテゴリを表しています。2 つ目は、データを表示する listView です。ユーザーがメニュー項目の 1 つをクリックしたときに listView に表示されるデータを変更する方法を探しています。例: ユーザーがメニュー項目 1 (フラグメント 1) をクリックすると、フラグメント 2 の listView を対応するデータで更新する必要があります。
フラグメントに関する Google Android 開発者のドキュメントを読みましたが、解決できませんでした。問題の解決策が見つかりませんでした。
多分私は何かを逃していますか?
編集: listItems.clear() でデータのリスト (ArrayList> listItems) をクリアして、ListView をクリアしようとしました。adapter.clear() の実行方法がわかりませんでした。このメソッドはクラス Adapter に存在しないようです。
要約すると、ListView(Fragment2)を含むフラグメントに更新メソッドを作成しました。メイン アクティビティのコールバック メソッドを介して呼び出したところ、その部分は機能しているようです (デバッグ モードで確認しました)。私の Fragment 2 の update メソッドでは、listItems.clear() でデータをクリアしてから、フラグメントの OnActivityCreated() が実行されます。その中には、データをダウンロードし、OnPostExecute で ListView を作成するスレッドの呼び出しがあります。
これが私のコード(fragment2)のサンプルです:
// After data are ready
lvListe = (ListView) getView().findViewById(R.id.lvListe);
lvListe.setSelected(true);
lvListe.setScrollingCacheEnabled(false);
adapter = new LazyAdapter(getActivity(),
getActivity().getBaseContext(), listItems,
R.layout.affichageitem, new String[] { "image", "title",
"subtitle" }, new int[] { R.id.img_title,
R.id.titre_main, R.id.soustitre_main });
lvListe.setAdapter(adapter);
lvListe.setClickable(true);
lvListe.setOnItemClickListener(onItemClickListener);
// Update method :
public void update(String requete, String type)
{
this.type = type;
this.requete = requete;
listItems.clear();
}