首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:帮助设计人员管理人员

Android:帮助设计人员管理人员
EN

Stack Overflow用户
提问于 2013-10-13 03:22:38
回答 1查看 175关注 0票数 2

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

我有两个List,一个是People的列表,一个是Group的列表,两个列表都是从各自的SQLite database中输入数据的。

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

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

实现这一目标的最佳途径是什么?

到目前为止,我已经尝试更改我的GroupsAdapter以扩展BaseExpandableListAdapter并使用该适配器,但它只是无法在我的活动中只使用一个ListView,因为ListView也不能设置ListView适配器和ExpandableListView。这花了我很长时间,但我最终恢复了我所有的改变,因为它不是我想要的那样工作。

任何关于如何完成我想要的设计的帮助都将受到感谢,谢谢。

编辑:粗略地画出我想要的那种东西的图片。按“人员和组”按钮不会启动新的活动,它只是设置另一个适配器,一个具有列表视图,另一个具有可扩展的列表视图。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-15 10:36:48

有几个ExpandableListView示例。也就是说,你可以检查这个:

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

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

在您的ExpandableListAdapter中,您需要两个列表:

-The第一个名为group list (父母),在您的例子中,它应该是组的列表。即:

代码语言:javascript
复制
ArrayList<String> groups;

-The第二个名为child list,您应该为第一个列表中的每个元素(每个组的人员列表)提供一个子元素列表。有几种方法可以做到这一点。也就是说,您可以使用ArrayList of ArrayLists,其中位置0中的ArrayList是属于位置0的组成员的列表,依此类推。

代码语言:javascript
复制
ArrayList<ArrayList<String>> children;

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

还可以使用Map将人员的ArrayList映射到每个组名(String):

代码语言:javascript
复制
Map<String, ArrayList<String>> children;

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

在我前面提供的示例中,它们使用Map

列表的结构方式取决于您和从数据库检索数据的方式。

您必须从BaseExpandableListAdapter实现所有需要的函数。请记住,组是“父母”(在您的例子中是组),而子组是每个组的元素(在您的例子中,是人)。如果您理解这一点,我认为应该很容易遵循我前面提供的示例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19341528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档