1

我对 android 很陌生,我目前正在阅读大量文档以了解如何开始。我在问这里之前尝试过搜索,但我找不到相关信息。

我的问题是在同一个活动中有 2 个列表视图。

带有类别列表的Listview A。

带有详细数据的Listview B(启动时显示的值基于 listviewA 的类别 1)

当单击 listviewA 的一项时,listViewB 的数据会更改以反映新的选择并显示新的详细信息数据列表。

有人可以给我正确的方向或指向涵盖该主题的教程的链接吗?抱歉,我目前无法发布任何代码。

4

3 回答 3

1

我不确定您尝试制作的布局类型是否对用户友好。如果您使用ExpandableListView进行更改,它将为用户提供更丰富的 UI 体验。您可以在此处查看教程。使用它会给您机会通过交互吸引用户。

在此处输入图像描述

无论如何,如果您确定要使用 ListView 则只需创建一个根目录并LinearLayoutListView其中使用两个细节。根据您的要求提供两个布局(和)的高度。ListViewTextViewListViewTextView

看看这个教程

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 个列表视图 1 个文本视图:

<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是关于产品的,那么ListView B是关于 ProductDetails 的。所以你需要声明一个类变量说ProductID哪个是两个数据之间的公共实体,并在ListView AsetOnClickListener的 getView() 中设置此变量,然后获取有关此的数据,并使用此查询的结果设置ListView B的适配器(可能是 SQL db 或RESTful 服务器)。如果您需要了解更多关于设置适配器的详细信息,请使用您尝试过的内容开始一个关于它的新问题。

希望我有所帮助。如果这解决了您的问题,请将其标记为答案。

于 2013-03-08T14:15:04.787 回答
0

我以前使用过这种策略,对我来说效果很好。使用线性布局来定位两个列表视图,填充“类别”列表视图并为其设置列表适配器。在这个列表视图上,我设置了一个 OnItemSelectedListener,它在激活时会在第二个“详细信息”视图上设置列表适配器。

根据您的确切需要,您可以替换详细列表视图的适配器,或者只是更改适配器查看的内容并告诉它刷新。

于 2013-03-08T14:24:39.470 回答
0

尝试这个:

通过 id (list_A) 获取 listview 后设置单击侦听器

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 回答