0

私はそれを短く、要点にとどめようとします。

以下のスクリーンショットを確認してください。 ここに画像の説明を入力

この ListView でアイテムを押すと、フラグメントが対応するプレーヤーのデータを持つ新しいフラグメントに置き換えられるようにするにはどうすればよいですか? FrameLayout tabcontent のコンテンツを置き換える必要がありますか? もしそうなら、どうすればViewPagerがまだ機能していることを確認できますか?

「基本アクティビティ」の XML:

<TabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TabWidget
        android:id="@android:id/tabs"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0"/>

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_weight="0"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>

</LinearLayout>
</TabHost>

そして、これは onActivityCreated です:

@Override
    public void onActivityCreated(Bundle savedInstance)
    {
        super.onActivityCreated(savedInstance);
        setHasOptionsMenu(true);


        listView = (ListView)getActivity().findViewById(R.id.lv_federations);
        listView.setVisibility(View.GONE);
        if (savedInstance == null)
        {
            new PullFederationDataTask().execute();

        }       

        listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1,
                    int position, long arg3) 
            {
                // Replace Fragment
            }
        });
    }

私は何をしますか?

4

1 に答える 1

0

私はonItemClickListener同じ問題に苦しんでおり、適切な解決策をまだ見つけていないため、コード内の as の Fragment の置き換えについてはわかりません。

を拡張してプレーヤー リストを実装する場合、現在のフラグメントを、フラグメント トランザクションListFragmentを使用してプレーヤーの詳細を表示する新しいフラグメントに置き換えることができます (または、新しいアクティビティを開始することもできますが、この回答ではフラグメント トランザクションについて説明します)。 .

onListItemClickフラグメントを置き換えるには、クリックされたリスト項目の ID をフラグメントのコンストラクターの引数として受け取るメソッドで新しいフラグメントを作成できます。

@Override
public void onListItemClick (ListView l, View v, int position, long id) {

    // Here I assume that the fragment containing the player details
    // is called PlayerDetailFragment.
    // The id of the item that was clicked is passed to the fragment's constructor.
    Fragment newFragment = new PlayerDetailFragment(id);
    FragmentTransaction ft = getFragmentManager().beginTransaction();

    // Replace whatever is in the fragment_container view with this fragment,
    // and add the transaction to the back stack.
    // android.R.id.content refers to the id of the root ViewGroup.
    ft.replace(android.R.id.content, newFragment);
    ft.addToBackStack(null);

    // Commit the transaction
    ft.commit();    
}

ListAdapter のgetItemId()メソッドを使用して、プレーヤーの ID を参照できます。ListView.setAdapter()メソッドを使用して、独自のものを に使用しListAdapterますListView。はListAdapter、このリストを裏付けるデータを維持し、そのデータ セット内のアイテムを表すビューを生成する役割を果たします。このArrayAdapterチュートリアルでは、独自のを作成する方法について説明しますListView

ListAdapterで、メソッドをオーバーライドして、getItemId()プレーヤーの ID を返します。その後PlayerDetailFragment、ID を取得してデータベースからデータを取得できます。

私は ViewPagers を扱った経験がないので、それを手伝うことはできません。

于 2012-06-30T17:47:18.050 に答える