0

ViewPager内に、2つのクイズモード用に2つのフラグメントを持つクイズアプリがあります。フラグメントごとに、他のものに加えて、すべてのカテゴリを反復するwhileループ内でXMLからlinearlayoutsを膨らませることにより、動的にリストを作成します。このリストを含むこのレイアウトは、両方のモードで同一です。異なるのはフラグメントの残りの部分であるため、2つの別々のページが必要です。

したがって、問題は、各フラグメント内で1回ずつ、レイアウトを2回膨らませるというこのコストのかかるプロセスを実行することです。これを1回だけ行い、2回使用したいと思います。

私が検討した2つの解決策:

  • 親アクティビティでアダプタを使用し、フラグメントを介してこれにアクセスし、続いてExpandableListViewを使用します。

問題:

  1. チェックボックスを使用してカテゴリを選択します。2つのフラグメントは、クリックの処理が異なります。私の限られた知識では、これをどのように達成するかについての手がかりはありません。カスタムレイアウトを拡張できることは理解していますが、フラグメントにリスナーを設定するにはどうすればよいですか?
  2. 私のカテゴリのいくつかはグループ化されており、他はスタンドアロンのアイテムです。これらのアイテムの矢印を削除するにはどうすればよいですか?

  • 親アクティビティでarraylistを使用します。各フラグメントでこれにアクセスし、この方法で親にレイアウトを追加します。

問題:

  1. 同じビューを2回追加しているため、これを行うことができません。指定された子にはすでに親があるため、エラーが発生します。(IllegalStateException)

ただし、これは、チェックボックスに簡単にアクセスして、checkedchangedlistenersの設定を繰り返すことができることを意味します

よろしくお願いします:)さらに詳しい情報やその他の情報が必要な場合は、お問い合わせください。

4

1 に答える 1

1

すべてのカテゴリを反復処理するwhileループ内でXMLからlinearlayoutsを膨らませることにより、動的にリストを作成します。

これはを示唆していListViewます。

親アクティビティでarraylistを使用します。各フラグメントでこれにアクセスし、この方法で親にレイアウトを追加します。

このソリューションは最初から機能しません。これは、に2つのフラグメントがViewPagerあり、異なる動作を課しているためです。フラグメントが含まれていない場合は、ViewPagerそれらのビューをリストに保存した後、フラグメントビューから動的にデタッチ//アタッチするメカニズムを構築できます。しかし、ビューをリストに保存すること(およびそれらを常にメモリに保持すること)に加えて、それらのステータスを管理するという頭痛の種は、それだけの価値はありません。

親アクティビティでアダプタを使用し、フラグメントを介してこれにアクセスし、続いてExpandableListViewを使用します。

フラグメントごとに1つずつ、2つではなく、1つのアダプターのみを使用するのはなぜですか(独立しているため)。また、フラグメント自体にアダプターを実装します。

チェックボックスを使用してカテゴリを選択します。2つのフラグメントは、クリックの処理が異なります。私の限られた知識では、これをどのように達成するかについての手がかりはありません。カスタムレイアウトを拡張できることは理解していますが、フラグメントにリスナーを設定するにはどうすればよいですか?

よくわかりませんが、「行」レイアウトからにアクセスCheckBoxeし、2つのフラグメントに基づいてユーザーアクションで異なる動作をする場合は、基本アダプタークラスを非常に簡単に実装できます。CheckBoxその基本アダプタークラスは共通論理を処理しますが、アクション(内)で呼び出される抽象メソッドもありますOnCheckedChangeListener。そのベースアダプタの2つのサブクラス(2つのフラグメント用)はそれぞれ、互いに独立した独自のロジックを使用してその抽象メソッドを実装します。

私のカテゴリのいくつかはグループ化されており、他はスタンドアロンのアイテムです。これらのアイテムの矢印を削除するにはどうすればよいですか?

上記のように、これはスマートアダプタを実装することで実行できます。

于 2013-01-18T18:24:49.267 に答える