2

在我的主要活动中,我有一个ListView.

我有两个Lists,1是s的列表,People1是Groups的列表。两个列表都从各自的SQLite database.

为了显示这两个列表,我说ListView.setAdapter(PeopleAdapter)ListView.setAdapter(GroupAdapter)是适配器只是扩展BaseAdapter和覆盖相关方法等的ListView 适配器。

我想要做的是将Group视图从普通列表视图更改为,ExpandableListView以便当我单击 a 时GroupPeople将出现在ListView

实现这一目标的最佳方法是什么?

到目前为止,我已经尝试更改我GroupsAdapter的扩展BaseExpandableListAdapter和使用该适配器,但它只是无法ListView在我的活动中使用 1,因为ListView无法设置ListView适配器和 a ExpandableListView。我花了很长时间,但最终还是恢复了所有更改,因为它并没有按照我想要的方式工作。

任何有关如何完成我想要的设计的帮助将不胜感激,谢谢。

编辑:我正在寻找的那种东西的粗略绘制的图片。按下人员和组按钮不会启动新活动,它只是设置另一个适配器,一个具有列表视图,一个具有可扩展列表视图。

在此处输入图像描述

4

1 回答 1

1

有几个ExpandableListView例子。即,你可以检查这个:

http://theopentutorials.com/tutorials/android/listview/android-expandable-list-view-example/

ExpandableListView 的主要部分是它的适配器。在上面的示例中,它是ExpandableListAdapter并且它扩展了BaseExpandableListAdapter.

在你的ExpandableListAdapter你需要两个列表:

- 第一个称为group list(父母),在您的情况下,它应该是组列表。IE:

ArrayList<String> groups;

-第二个称为child list,您应该为第一个列表中的每个元素提供一个子列表(每个组的人员列表)。有几种方法可以做到这一点。即,您可以使用位置0ArrayList中属于位置 0 组的人员的列表,依此类推。ArrayListsArrayList

ArrayList<ArrayList<String>> children;

public String getChild(int groupPosition, int childPosition) {
    return children.get(groupPosition).get(childPosition);
}

您还可以使用一个人Map映射ArrayList到每个组名 ( String):

Map<String, ArrayList<String>> children;

public String getChild(int groupPosition, int childPosition) {
    return children.get(groups.get(groupPosition)).get(childPosition);
}

在我上面提供的示例中,他们使用Map.

构建列表的方式取决于您以及您从数据库中检索数据的方式。

您必须从BaseExpandableListAdapter. 请记住,组是“父母”(在您的情况下是组),而孩子是每个组的元素(在您的情况下是人)。如果您理解这一点,我认为按照我上面提供的示例应该很容易。

于 2013-10-15T10:36:48.077 回答