Android:帮助设计一个人事经理

时间:2013-10-13 03:22:38

标签: android sqlite listview android-listview

在我的主要活动中,我有ListView

我有两个List,1是People的列表,1是Group的列表。 两个列表都来自各自的SQLite database

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

我要做的是将Group视图从普通列表视图更改为ExpandableListView,这样当我点击Group时,People就会出现在ListView

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

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

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

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

enter image description here

1 个答案:

答案 0 :(得分:1)

那里有几个ExpandableListView个例子。即,你可以查看这个:

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

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

ExpandableListAdapter中,您需要两个列表:

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

ArrayList<String> groups;

- 第二个称为child list,您应该有第一个列表中每个元素的子列表(每个组的人员列表)。有几种方法可以做到这一点。即,您可以使用ArrayList ArrayLists ArrayList,其中位置0中的ArrayList<ArrayList<String>> children; public String getChild(int groupPosition, int childPosition) { return children.get(groupPosition).get(childPosition); } 是属于位置0中的组的人员列表,依此类推。

Map

您还可以ArrayListString人映射到每个群组名称(Map<String, ArrayList<String>> children; public String getChild(int groupPosition, int childPosition) { return children.get(groups.get(groupPosition)).get(childPosition); } ):

Map

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

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

您必须从{{1}}实施所有必需的功能。请记住,群组是“父母”(在您的情况下,群组),孩子是每个群组的元素(在您的情况下,人群)。如果您理解这一点,我认为应该很容易遵循我上面提供的示例。