我正在创建一个可扩展列表,其中每个列表都包含一组对象(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();
}
答案 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是一个map,在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()