【问题标题】:Android: Help on the design of a people managrAndroid:帮助设计人事经理
【发布时间】:2013-10-13 03:22:38
【问题描述】:

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

我有两个Lists,1 是People 的列表,1 是Groups 的列表。 两个列表都从各自的SQLite database 获取数据。

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

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

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

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

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

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

【问题讨论】:

  • 我不确定我是否理解正确。您是否想要一个 ExpandableListView,其中父项(单击以展开列表的视图)是组,子项是属于每个组的人员列表?
  • @PXDeveloper 是的,这就是我想要的。请参阅我的编辑以获取更多详细信息。感谢您的回复。

标签: android sqlite listview android-listview


【解决方案1】:

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

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

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

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

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

ArrayList<String> groups;

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

ArrayList<ArrayList<String>> children;

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

您还可以使用MapArrayList 的人映射到每个组名 (String):

Map<String, ArrayList<String>> children;

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

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

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

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

【讨论】:

  • 感谢您的回答,我将开始实施它,看看它会导致什么。当我完成/卡住时,我会回复你。
  • 经过深思熟虑,我决定改变我的设计,因为这个可扩展的列表视图干扰了太多其他东西。但是你的回答仍然很好,它让我学到了很多关于可扩展列表视图的知识,这些视图在未来肯定会用到,谢谢 :) 我会尽快给你赏金等。
  • 很抱歉,我无法提供更多帮助,但尝试新事物是您了解 Android 的方式 :) 祝您的应用好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 2011-01-16
  • 2023-03-22
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
相关资源
最近更新 更多