2013-09-21 4 views
0

Я создаю расширяемый список, в котором каждый список содержит набор объектов (Product). Но при подсчете числа детей я получаю исключение нулевого указателя и не показываю список.Расширяемый список не отображается

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

пост Map , Список > bmcLis t код –

+0

Загрузка не проблема Я получаю значение BMC коллекции. Я думаю, что проблема заключается только в том, что дети подсчитывают. –

+0

@u_pendra проверить ответ .. – Piyush

ответ

1

Если я понял правильно:

Groups.get(groupPosition)) возвращает строку из списка, который затем в качестве параметра для bmcCollection.get(string)

Теперь bmcCollection является , а в API строго сказал :

Возвращает значение, на которое отображается указанный ключ, или null, если эта карта не содержит сопоставления для ключа.

Поэтому он возвращает значение null, которое вызывает исключение после вызова метода size().

EDIT: рассмотрение комментарии.

Я собираюсь идти вперед и считать, что список 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()

+0

Спасибо, Куба, но какое решение здесь. –

+0

@u_pendra, что содержит список 'List ' на карте? –

+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; 
} 
+0

Piyush, я думаю, вы пытаетесь сравнить значение int с нулем. –

+0

нет .... его не я столкнулся с той же проблемой, и после этого он был решен .... так что я так не думаю – Piyush

Смежные вопросы