2013-09-21 3 views
0

각 목록에 개체 집합 (Product)이 포함 된 확장형 목록을 만듭니다. 하지만 자식 포인터를 얻으면 null 포인터 예외가 발생하고 목록을 표시하지 않습니다.확장형 목록이 표시되지 않습니다.

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

후지도 목록, > bmcLis t 코드 –

+0

로드가 문제가되지 않습니다. BMC 컬렉션의 가치를 얻고 있습니다. 나는 문제가 아이들 카운트를 얻는 동안에 만 있다고 생각한다. –

+0

@u_pendra 확인 답변. – Piyush

답변

1

나는 이해하면 우측 :

Groups.get(groupPosition))는 다음 입니다 bmcCollection.get(string)

이제 bmcCollection에 매개 변수로 주어진 목록에서 문자열을 반환하고, API에 엄격하게 말한다 :

지정된 키가 매핑되는 값을 반환하거나 키에 매핑이없는 경우 null을 반환합니다.

따라서 size() 메서드를 호출 한 후 예외를 트리거하는 null을 반환합니다.

수정 사항 : 의견을 고려하십시오.

나는지도에서 목록 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 값과 null을 비교하려고합니다. –

+0

아니 .... 아니 내가 같은 문제에 직면했고 이후이 해결되었다 .... 그래서 난 그렇게 생각하지 않아요. – Piyush

관련 문제