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

Java 如何在选项卡小部件中创建2个列表视图,java,android,eclipse,listview,Java,Android,Eclipse,Listview,我在android.com的教程中创建了一个列表视图,它位于一个选项卡小部件中,但问题是它遍布整个选项卡区域,我想在一个选项卡中创建两个列表,一个挨着另一个。。。我该怎么做? 以下是本教程的链接: 编辑:好的,我在onCreate方法中有两个静态的最终字符串数组,称为CONTACTS和FAVORITES,我将MH的布局复制到一个名为list_的xml文件中,并将ID更改为lv_cons和lv_vav,以及另一个名为tv的布局(TextView)它只有一个文本视图,因为这是适配器所需要的 sup

我在android.com的教程中创建了一个列表视图,它位于一个选项卡小部件中,但问题是它遍布整个选项卡区域,我想在一个选项卡中创建两个列表,一个挨着另一个。。。我该怎么做? 以下是本教程的链接:

编辑:好的,我在onCreate方法中有两个静态的最终字符串数组,称为CONTACTS和FAVORITES,我将MH的布局复制到一个名为list_的xml文件中,并将ID更改为lv_cons和lv_vav,以及另一个名为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));
super.onCreate(savedInstanceState);
ListView lv_cons=(ListView)findViewById(R.id.lv_cons);
ListView lv_fav=(ListView)findViewById(R.id.lv_fav);
lv_cons.setAdapter(新阵列适配器(此,R.layout.tv,联系人));
lv_fav.setAdapter(新的ArrayAdapter(这个,R.layout.tv,收藏夹));
setContentView(findViewById(R.layout.list_who));

如果您希望在单独的选项卡(即每个选项卡中的
列表视图)中处理两个单独的
列表视图
,请遵循本教程:

您只需制作一个复合布局,并以编程方式从xml中提取
tabHost
,然后动态放大选项卡。如果您希望两个列表通过
Intent
相互通信,我进一步建议使用此方法。两个选项卡将托管在一个活动中。如果我误解了你的问题,你想在一个活动中显示两个独立的、相邻的列表,那么忽略我的答案


我想这就是你要找的。祝你好运。

如果你想让两个列表并排显示,有几件事需要改变

首先是选项卡内容的(最小)布局:

<?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>
从那时起,您可以添加所有内容来填充/操作列表的内容

//编辑:如果您坚持以编程方式创建布局,请简单地将上述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);

您想要两个选项卡,每个选项卡中有一个列表,还是一个选项卡中有两个列表?谢谢,但您确实误解了,我确实想要一个选项卡中有两个列表,我的问题会更清楚。非常感谢,但是当我将ContentView设置为布局,或为列表设置适配器时,它崩溃了。显然是时候开始在问题中添加一些代码了。上面的内容应该可以正常工作,所以您可能混淆了其他一些内容。在尝试膨胀任何视图之前,您必须调用
setContentView(…)
。换句话说,将该调用移到
super.onCreate(…)
之后。这样想:如果你还没有告诉活动应该使用什么布局,它怎么能尝试膨胀任何视图?好吧,我把它移到了顶部,但仍然没有运气,通过调试器它在seContentVie行崩溃,如果我删除它,应用程序在setAdapter行崩溃。哦,我忘了,我不想使用setContentView,我想从活动中创建列表,因为此活动是tabHost中的一个选项卡,也是由android.com的教程制作的:
// 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);