8

ListView にデータを表示するアプリを作成しています。データは、たとえば 2 つのタイプ (人気、お気に入り) に分類されます。1 つのアクティビティと 2 つのフラグメントがあります。Fragments は、カテゴリに基づいてアイテムのリストを表示します。これには ListView を使用しました。次に、デザインはまったく同じですが、異なるビュー ID (TextView の tvId1、tvId2) を持つ 2 つの fragment_layouts があります。フラグメント内のコードは、対応するレイアウトとレイアウト内のビューを参照する点のみが異なります。JSON 形式の URL からデータを取得します。ただし、各カテゴリには異なる URL のセットがあり、同じ構造で異なるデータが生成されます。次に、各 Fragment で対応する URL を解析し、それに応じて ListView を設定します。これまでのところすべてが機能します。

私が知りたいのは、1つのフラグメントを使用して、それぞれに異なるデータセットで2回使用できる方法はありますか? これにより、新しいカテゴリが発生した場合に別の Fragment を作成する必要がなくなります。

どんな助けにも感謝します。

4

1 に答える 1

11

もちろんできます。実際には、このようにする必要があります。

new Fragment(); フラグメントを作成するときは、データを引数として取る静的な newInstance 関数を作成しないでください。

public static MyFragment newInstance(int type) {
    MyFragment fragment = new MyFragment();
    Bundle args = new Bundle();
    args.putInt("type", type);
    fragment.setArguments(args);
    return fragment;
}

そして、以下を使用して onCreate() メソッドでタイプを取得できます。

getArguments().getInt("type");

次に、タイプを取得し、それに応じて Web サービスを呼び出し、それに応じて を設定できますViews

于 2013-07-16T13:21:01.663 に答える