我们可以在单个布局中添加多个列表视图

时间:2014-09-01 12:27:37

标签: android android-layout listview

我有三个要显示的列表。如何在单个布局上添加它们? 我的布局文件是

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

<ListView
    android:id="@+id/list1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
 />
<ListView
    android:id="@+id/list2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
 />
<ListView
    android:id="@+id/list3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
 />

我为每个列表使用CustomAdapter

 mylistview1 = (ListView) findViewById(R.id.list1);
    mylistview2 = (ListView) findViewById(R.id.list2);
    mylistview3 = (ListView) findViewById(R.id.list3);
    //1
    CustomAdapterA adapterA = new CustomAdapterA(this, rowItems1);
    mylistview1.setAdapter(adapterA);
    mylistview1.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

            String member_name = rowItems1.get(position).getMember_name();
            Toast.makeText(getApplicationContext(), "" + member_name,
                    Toast.LENGTH_SHORT).show();
        }
    });
    //2
    CustomAdapterM adapterM = new CustomAdapterM(this, rowItems2);
    mylistview2.setAdapter(adapterM);
    mylistview2.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

            String member_name = rowItems2.get(position).getMember_name();
            Toast.makeText(getApplicationContext(), "" + member_name,
                    Toast.LENGTH_SHORT).show();
        }
    });
    //3
    CustomAdapterS adapterS = new CustomAdapterS(this, rowItems3);
    mylistview3.setAdapter(adapterS);
    mylistview3.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

            String member_name = rowItems3.get(position).getMember_name();
            Toast.makeText(getApplicationContext(), "" + member_name,
                    Toast.LENGTH_SHORT).show();
        }
    });

我尝试将每个布局放在单独的线性布局中,但没有奏效, 任何人都可以建议应该在这做什么???

3 个答案:

答案 0 :(得分:0)

尝试制作每个ListViews占据屏幕高度的1/3,看看它们是否可见。

<ListView
    android:id="@+id/list1"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1
 />
<ListView
    android:id="@+id/list2"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1
 />
<ListView
    android:id="@+id/list3"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1
 />

答案 1 :(得分:0)

最初,listview看起来像是占据了整个屏幕。您必须相应地设置其宽度以在一个屏幕中查看它们。

答案 2 :(得分:0)

如果您的想法是完成一个列表,则可以看到下一个列表,答案是:

不,你不能这样做。在您的适配器上,您应该覆盖getViewTypeCount()并返回3,然后为每个位置生成正确的视图。

如果你想让每个列表占据屏幕的1/3,你必须使用XML中的layout_weight参数:

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

<ListView
    android:id="@+id/list1"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
 />
<ListView
    android:id="@+id/list2"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
 />
<ListView
    android:id="@+id/list3"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
 />