2

我的观点如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

 <!--list 1-->
<ListView
    android:id="@+id/lvMenu"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:cacheColorHint="@android:color/transparent"
    android:layout_marginBottom="10dp" />

 <!--the header-->
<LinearLayout
android:id="@+id/llIndustries"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/dark_grey_title_bar"
android:paddingBottom="5dp"
android:paddingLeft="10dp"
android:paddingTop="5dp" >
 <TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="@string/industry_clusters"
    android:textSize="16sp"/>
 </LinearLayout>

  <!--list 2-->
  <ListView
    android:id="@+id/lvIndustries"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:cacheColorHint="@android:color/transparent" />
 </LinearLayout>

我使用两个自定义适配器来显示两个列表视图(列表视图数据源完全不同):

private List<MenuInfo> menuData;
private List<MenuInfo> industriesData;

lvMenu = (ListView) layoutRoot.findViewById(R.id.lvMenu);
lvIndustries = (ListView) layoutRoot.findViewById(R.id.lvIndustries);

menuAdapter = new MenuAdapter(getActivity(), menuData);
lvMenu.setAdapter(menuAdapter); 

industriesAdapter = new MenuAdapter(getActivity(), industriesData);     
lvIndustries.setAdapter(industriesAdapter);

我期望的是:

 <ListView/> <!-- listview 1-->
 <TextView/> <!-- header-->
 <ListView/> <!-- listview 2-->

但问题是两个列表视图自动合并为一个ListView,并且标题TextView消失(如果有一个ListView,标题将显示)。
我不知道这个问题。你能告诉我我哪里错了吗?

4

2 回答 2

3

试试下面的例子: 布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="3" >

    <ListView
        android:id="@+id/list2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/face"
        android:cacheColorHint="#00000000" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Header"
            android:visibility="visible" />

        <ListView
            android:id="@+id/list"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/background"
            android:cacheColorHint="#00000000" />
    </LinearLayout>



</LinearLayout>

在你的课上

 ListViewAdapter arrayAdapter = new ListViewAdapter(this, values);

            listview.setAdapter(arrayAdapter);

        ListViewAdapter arrayAdapter2 = new ListViewAdapter(this, values2);

            listview2.setAdapter(arrayAdapter2);

使用您的列表视图在 onCreate 中添加这两行:

Utility.setListViewHeightBasedOnChildren(listview);
        Utility.setListViewHeightBasedOnChildren(listview2);

在您的活动中创建一个内部类:

//Test scrollview custom
    public static class Utility {
        public static void setListViewHeightBasedOnChildren(ListView listView) {
            ListAdapter listAdapter = listView.getAdapter(); 
            if (listAdapter == null) {
                // pre-condition
                return;
            }

            int totalHeight = 0;
            for (int i = 0; i < listAdapter.getCount(); i++) {
                View listItem = listAdapter.getView(i, null, listView);
                listItem.measure(0, 0);
                totalHeight += listItem.getMeasuredHeight();
            }

            ViewGroup.LayoutParams params = listView.getLayoutParams();
            params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
            listView.setLayoutParams(params);
        }
    }

代码取自:listViewNotScrolling

它肯定会奏效!:)

于 2013-10-02T05:22:36.853 回答
1

如果你想用 Header 创建 Listview。然后使用节标题列表视图。

参考这个例子。

希望对你有帮助!!

或者

如果它修复了它们之间只有两个 Listview 和一个 Header

然后

1)只取一个Listview。

2) 对 Listview Row 使用自定义适配器和自定义布局。

3)在自定义布局中添加两个额外的TextView

列出第一个 ListView 数据

  • (固定 TextView - 标题 - 使其可见性可见)
  • (额外 1 个 TextView - 标题 - 将其可见性消失)
  • (额外 2 TextView - 标题 - 将其可见性消失)

列出第二个 ListView 数据

  • (固定 TextView - 标题 - 将其可见性消失)
  • (额外 1 个 TextView - Header -Put 它的可见性 VISIBLE )
  • (额外 2 TextView - Header -Put 其可见性 VISIBLE )
于 2013-10-02T04:56:26.417 回答