1

私はAndroidを初めて使用します。現在、開始方法を理解するために多くのドキュメントを読んでいます。ここで質問する前に検索しようとしましたが、関連する情報が見つかりません。

私の問題は、同じアクティビティで2つのリストビューを使用することです。

カテゴリのリストを含むリストビューA。

詳細データを含むリストビューB(起動時に表示される値はリストビューAのカテゴリ1に基づいています)

listviewAの項目をクリックすると、listViewBのデータが変更され、新しい選択が反映され、詳細データの新しいリストが表示されます。

誰かが私に正しい方向性またはこのトピックをカバーするチュートリアルへのリンクを教えてもらえますか?申し訳ありませんが、現在コードを投稿できません。

4

3 に答える 3

1

作成しようとしているレイアウトのタイプがユーザーフレンドリーかどうかはわかりません。ExpandableListViewで変更すると、ユーザーははるかにリッチなUIエクスペリエンスを利用できます。チュートリアルはこちらで確認できます。これを使用すると、チャンスが得られます。インタラクションを介してユーザーを引き付けること。

ここに画像の説明を入力してください

とにかく、ListViewを使用することが確実な場合は、ルートLinearLayoutを作成するだけで、この中に2ListView秒かかります。ただし、2番目のコントロールをリストビューとして使用するのは意味がありません。2番目のコントロールをaにする代わりに、ListViewaを使用TextViewして表示します。詳細。要件に応じて、両方のレイアウト(ListViewおよびTextView)の高さを指定します。

このチュートリアルを見てください

2リストビュー:

<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:baselineAligned="false" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >

            <ListView
                android:id="@+id/listView1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" android:visibility="visible">
            </ListView>
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1" >

            <ListView
                android:id="@+id/listView2"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" android:visibility="visible">
            </ListView>
        </LinearLayout>
    </LinearLayout>

1 ListView 1 TextView:

<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:baselineAligned="false" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >

            <ListView
                android:id="@+id/listView1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" android:visibility="visible">
            </ListView>
        </LinearLayout>
            <TextView android:id="@+id/TextView1" android:text="details"/>
    </LinearLayout>

アップデート:

問題をもう少し説明してください。シナリオでは、リストビュー間のデータが相互に接続されているためです。たとえば、ListView AがProductsに関するものである場合、 ListView BはProductDetailsに関するものであるため、クラス変数を宣言する必要がありますProductID。は両方のデータに共通のエンティティであり、 ListViewAのsetOnClickListener`` getView() `でこの変数を設定し、その直後にこれに関するデータをフェッチして、このクエリの結果(SQLdbまたはRESTfulサーバー)。アダプターの設定の詳細を知る必要がある場合は、試したことから新しい質問を開始してください。

私が助けてくれたことを願っています。これで問題が解決した場合は、回答としてマークしてください。

于 2013-03-08T14:15:04.787 に答える
0

私は以前にこの戦略を使用しましたが、それは私にとってうまくいきました。線形レイアウトを使用して2つのリストビューを配置し、「カテゴリ」リストビューにデータを入力して、そのリストアダプタを設定します。このリストビューで、OnItemSelectedListenerを設定します。これをアクティブにすると、2番目の「詳細」ビューにリストアダプタが設定されます。

正確なニーズに応じて、詳細リストビューのアダプターを置き換えるか、アダプターが参照するコンテンツを変更して更新するように指示することができます。

于 2013-03-08T14:24:39.470 に答える
0

これを試して:

ID(list_A)でリストビューを取得した後、クリックリスナーを設定します

list_A.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
              //here you can get click position from parameter position
             // and do somthing in Adapter_B and then call notifyDataSetChanged() for Adapter_B
              Adapter_B.notifyDataSetChanged(); 
            }
        });
于 2013-03-09T04:33:34.217 に答える