如何在选项卡小部件中创建2个列表视图

时间:2011-12-29 22:09:34

标签: java android eclipse listview

我通过android.com的教程创建了一个列表视图,它在一个标签小部件中,但问题是它遍布标签的区域,我想在一个标签中创建2个列表,一个在另一个旁边。 .. 我怎样才能做到这一点? 这是教程的链接:

http://developer.android.com/resources/tutorials/views/hello-listview.html

编辑:确定我在onCreate方法中有什么,这个类中有2个静态最终的String数组,名为CONTACTS和FAVORITES,我将MH的布局复制到名为list_who的xml文件中并更改了lv_cons和lv_vav的ID,以及另一个名为tv(TextView)的布局,它只有一个文本视图,因为适配器需要什么

super.onCreate(savedInstanceState);
ListView lv_cons = (ListView) findViewById(R.id.lv_cons);
ListView lv_fav = (ListView) findViewById(R.id.lv_fav);
lv_cons.setAdapter(new ArrayAdapter<String>(this, R.layout.tv, CONTACTS));
lv_fav.setAdapter(new ArrayAdapter<String>(this, R.layout.tv, FAVORITES));
setContentView(findViewById(R.layout.list_who));

2 个答案:

答案 0 :(得分:1)

如果您想要并排显示两个列表,则需要更改一些内容。

首先是标签内容的(最小)布局:

<?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" >

    <ListView
        android:id="@+id/left_listview"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="1" />

    <ListView
        android:id="@+id/right_listview"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="1" />

</LinearLayout>

如果您关注了您链接的Hello ListView示例代码,则必须将ListActivity更改回Activity。前者基本上提供了一些使用列表的便捷方法,但是您可以使用常规活动完成相同的操作,您需要使用多个列表。

你可以使用他们的id来扩展你的ListViews和其他任何视图(没有更多的getListView()便利方法,因为我们不再扩展ListActivity了)`:

ListView leftList = (ListView) findViewById(R.id.left_listview);
ListView rightList = (ListView) findViewById(R.id.right_listview);

从那时起,您可以添加所有内容来填充/操作列表的内容。

//编辑:如果您坚持以编程方式创建布局,请将上面的xml代码简单地转换为Java等效代码:

// Create ViewGroup as container for both lists
LayoutParams rootParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
LinearLayout root = new LinearLayout(this);
root.setLayoutParams(rootParams);

// Create LayoutParams for the lists - both identical in this example
LinearLayout.LayoutParams listParams = new LinearLayout.LayoutParams(0, LayoutParams.FILL_PARENT);
listParams.weight = 1;
ListView leftList = new ListView(this);
ListView rightList = new ListView(this);
leftList.setLayoutParams(listParams);
rightList.setLayoutParams(listParams);

// Add lists to container
root.addView(leftList);
root.addView(rightList);

// Set container as content view
setContentView(contentView);

答案 1 :(得分:0)

如果您希望在单独的标签中处理两个单独的ListView(即每个标签中的ListView),请按照本教程进行操作:Android TabActivity with two list views

您只需制作一个复合布局,然后以编程方式从xml中提取tabHost,然后即时对标签进行充气。如果您希望两个列表通过Intent相互通信,我还建议您使用此方法。两个选项卡都将托管在一个活动中。如果我误解了你的问题,你想在一个活动中显示两个单独的相邻列表,那就忽略了我的答案。

我认为这就是你要找的东西。祝你好运。