Java Android:使用不同的适配器合并两种类型的列表,列表在UI中合并
我正在从事一个Android项目,在这个项目中,我有两种不同类型的聊天机会。一个用于Java Android:使用不同的适配器合并两种类型的列表,列表在UI中合并,java,android,list,Java,Android,List,我正在从事一个Android项目,在这个项目中,我有两种不同类型的聊天机会。一个用于组,另一个用于私人或一对一通信。现在,登录用户可以与之聊天的所有组和用户显示在ConversationActivity中 为此,我在UI中准备了两个列表,内容将通过异步方法添加到每个列表中。每个列表都有一个单独的适配器,我可以使用它轻松识别单击了哪个项目 这个机制工作得很好,只是当活动打开时,列表看起来是层叠在一起的,显然这不是目的。所以我在相对论中指出,将它置于另一个之上,这也没有帮助 如何在一个活动页面中显示
组
,另一个用于私人
或一对一通信。现在,登录用户可以与之聊天的所有组和用户显示在ConversationActivity
中
为此,我在UI中准备了两个列表,内容将通过异步方法添加到每个列表中。每个列表都有一个单独的适配器,我可以使用它轻松识别单击了哪个项目
这个机制工作得很好,只是当活动打开时,列表看起来是层叠在一起的,显然这不是目的。所以我在相对论中指出,将它置于另一个之上,这也没有帮助
如何在一个活动页面中显示两个具有两个不同适配器的列表?
activity_conversations.xml:
<?xml version="1.0" encoding="UTF-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="5dip"
android:layout_above="@+id/privateRelativeLay"
>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/conversationList"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="5dip"
android:id="@+id/privateRelativeLay">
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/privateConversationList"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
<ListView
android:id="@+id/list_slidermenu"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:dividerHeight="1dp" />
</android.support.v4.widget.DrawerLayout>
它们显示在彼此的顶部,因为您将它们放在具有相同定位属性(无)的单独相对位置中
一种修复方法是将两个列表视图放在一个线性布局中。您可以为该线性布局提供垂直或水平方向属性,具体取决于您希望如何显示它们,然后使用layout\u weight
属性确定每个ListView占据屏幕的哪个部分
例如:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
</ListView>
<ListView
android:id="@+id/listView2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
</ListView>
</LinearLayout>
注意:fill\u parent
是遗留的。改为使用匹配父视图。这是因为两个列表视图的高度都是填充父视图。尝试使用“包裹内容”(wrap content),或者在您的情况下,我不知道您希望这两个列表视图的显示方式,但我建议您使用具有所需方向的线性布局,并指定权重
只要覆盖整个屏幕的宽度和高度,布局就会相对堆叠
另外,现在不推荐使用fill_parent属性值,最好使用match_parent。如果有人想查看整个代码,我已经在这个粘贴箱中发布了所有代码:。谢谢……:)为什么要使用抽屉式布局?为什么它里面有相对论作为包装?您应该在问题中详细说明这些选项。@wvdz:Drawer布局用于显示导航抽屉。与此问题无关。相对布局,我不知道,我想我在开始这个项目时就发现了一些这样的东西,对Android不太了解。谢谢。:-)这工作做得很好。您知道如何在两个列表之间添加分隔符,以便用户知道这是一个不同的列表吗?谢谢。我可以想出三种解决办法。您可以为LinearLayout设置背景色,并将上下边距应用于ListView。您还可以定义边框资源,并在每个listview周围放置边框,如下所示:。第三种解决方案是在列表之间放置另一个视图对象。请检查有关向UI添加对象的问题:。非常感谢…-)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
</ListView>
<ListView
android:id="@+id/listView2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
</ListView>
</LinearLayout>