我正在尝试使用android ExpandableListView小部件。我有一个类Item,它有很多关于项目的属性。我希望我的列表看起来像,组列表的元素只显示项目的名称,以及一些其他重要的属性。当我点击该项目时,它会展开并显示给定项目的所有属性。所以基本上对我来说,group和child元素是相同的,我扩展的列表总是只有一个元素。为此编写适配器的正确方法是什么。我试过类似这样的东西,但是当我想展开一个元素时,总是给我空指针expecttions。
private Context context;
private ArrayList<VCDR> groups;
private ArrayList<ArrayList<VCDR>> children;
public ExpandableAdapter(Context context, ArrayList<VCDR> groups) {
this.context = context;
this.groups = groups;
this.children= new ArrayList<ArrayList<VCDR>>();
this.children.add(groups);
}
public Object getChild(int groupPosition, int childPosition) {
return children.get(groupPosition).get(childPosition);
}
答案 0 :(得分:0)
当您将组ArrayList分配给构造函数中的子多维数组时,您正在做的事情有点奇怪。我会重新检查一下。请查看官方文档中的示例:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList1.html
基本上,您将为群组标题添加一个数组(例如标题1,标题2等)。在您的子多维数组中,您希望为组数组的每个标题相应地分配属性。
文档给出了这个例子:
private String[] groups = { "People Names", "Dog Names", "Cat Names", "Fish Names" };
private String[][] children = {
{ "Arnold", "Barry", "Chuck", "David" },
{ "Ace", "Bandit", "Cha-Cha", "Deuce" },
{ "Fluffy", "Snuggles" },
{ "Goldy", "Bubbles" }
};
因此,对于'People Names',你会看到子对象的0索引中包含的数组...... Arnold,Barry,Chuck等。这也很容易被重写以使用ArrayList。
答案 1 :(得分:0)
我成功了,我想做什么。我不确定这是一种正确的方式,但似乎有效。由于我要显示的所有数据都在同一个类中,因此我只使用一个ArrayList。它基本上是一个视图 - 详细的视图应用程序。该小组本身只有一个孩子。你觉得那样好吗?或者我可能会在以后的实现中遇到不一致的问题?
public ExpandableAdapter(Context context, ArrayList<VCDR> groups) {
this.context = context;
this.groups = groups;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return groups.get(groupPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return groupPosition;
}
@Override
public int getChildrenCount(int groupPosition) {
return 1;
}