我正在尝试创建一个与呼叫日志活动类似的列表(在Froyo中)。这里,来自同一个人的重复呼叫被分组为可扩展列表项,而其他呼叫则是列表中的普通元素。如何创建这样的列表?是否可以使用ExpandableListView
类完成?
答案 0 :(得分:5)
使用ExpandableListView应该很容易。扩展BaseExpandableListAdapter以控制组元素和扩展列表元素的显示方式以及触发它们的事件应如何工作。有了这个,您可以组织此视图以显示单个元素的非消耗性组和多个元素的可扩展列表。使用这样的适配器,您可以提供ExpendableListView以使其正常工作
下面的实施示例。请注意,并非所有需要实现的方法都显示在此处,与问题无关。元素是一个虚构的类,实例可以告诉自己应该如何显示它们。
public class MyExpandableListAdapter extends BaseExpandableListAdapter {
private final List<Element> elements;
public MultiSelectExpandableListAdapter(Context c, List<Element> elements) {
this.elements = elements;
}
public View getGroupView(final int group, final boolean expanded, final View convertView,
final ViewGroup parent) {
if (elements.get(group).shouldBeDisplayedAsAGroup()) {
// inflate and setup view that displays expandable view header
} else {
// inflate and setup view of element that should be displayed as single element
}
}
public View getChildView(final int group, final int child, final boolean lastChild, final View convertView,
final ViewGroup parent) {
// inflate and setup child view
}
}