可展开的列表未显示

时间:2013-09-21 07:12:38

标签: android

我正在创建一个可扩展列表,其中每个列表都包含一组对象(Product)。但是在get children count中我得到空指针异常而不显示列表。

private Activity context;
private ArrayList<Product> allBmcList;
Map<ArrayList<Product>, List<String>> bmcCollection;
private List<String> Groups;



public ExpandableListAdapter(Activity context, List<String> groups,
        Map<ArrayList<Product>, List<String>> bmcList) {
    this.context = context;
    this.bmcCollection = bmcList;
    this.Groups = groups;
}

@Override
public int getChildrenCount(int groupPosition) {
    // Below line I am getting null pointer exception.


    return bmcCollection.get(Groups.get(groupPosition)).size();
}

2 个答案:

答案 0 :(得分:2)

试试这个:

@Override
public int getChildrenCount(int groupPosition) {
 int size = 0;
 if (bmcCollection.get(Groups.get(groupPosition)).size() != null)
 size = bmcCollection.get(Groups.get(groupPosition)).size();
 return size;
}

答案 1 :(得分:1)

如果我理解得对:

Groups.get(groupPosition))返回List中的一个字符串,然后作为参数提供给bmcCollection.get(string)

现在bmcCollection是一个,在API中严格说:

返回指定键映射到的值,如果此映射不包含键的映射,则返回 null。

因此它返回null,在调用size()方法后触发异常。

编辑:考虑评论。

我将继续并假设地图中的列表List<String>与列表List<String> groups相同。因此我会使用这种地图:

Map<String, ArrayList<Product>> bmcCollection;其中String是组的名称,列表是其子组。

然后应该工作:

String group_name = Groups.get(groupPosition);
List<String> children = bmcCollection.get(name);
return children.size()

或更短:

(bmcCollection.get(Groups.get(groupPosition))).size()