-1
的口组

我试图做一个dinamical发电集团的ExpandableListView崩溃的ExpandableListView

我宣布名单的数组,它代表了列表元素对于每个组

List<MarkCell>[] voti_materia; 

和我(10是组的最大数量,subject.getCount()是微调器中元素的数量)

voti_materia = new ArrayList[10]; 

for(int i=0; i<subjects.getCount();i++){ 
    voti_materia[i] = new ArrayList<>(); 
    listDataHeader.add(subjects.getItemAtPosition(i).toString()); 
} 

它的工作原理,它产生在屏幕上适当的群体,如果我尝试打开它的工作列表的第一个组,但如果我尝试打开其他组的应用程序崩溃的NullPointerException异常

java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference 
                      at com.aesolutions.schooltools.diary_adapter.ExpandableListAdapter.getChildrenCount(ExpandableListAdapter.java:75) 
                      at android.widget.ExpandableListConnector.refreshExpGroupMetadataList(ExpandableListConnector.java:563) 
                      at android.widget.ExpandableListConnector.expandGroup(ExpandableListConnector.java:688) 
                      at android.widget.ExpandableListView.handleItemClick(ExpandableListView.java:693) 
                      at android.widget.ExpandableListView.performItemClick(ExpandableListView.java:653) 
                      at android.widget.AbsListView$PerformClick.run(AbsListView.java:3305) 
                      at android.widget.AbsListView$4.run(AbsListView.java:4228) 
                      at android.os.Handler.handleCallback(Handler.java:751) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6236) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781) 

ExpandableListAdapter的这一功能

@Override 
public int getChildrenCount(int groupPosition) { 
    return this._listDataChild.get(this._listDataHeader.get(groupPosition)) 
      .size(); 
} 

_listDataChild被声明为

private HashMap<String, List<MarkCell>> _listDataChild; 

我不明白它为什么会崩溃...有人可以帮助我吗?谢谢大家

+0

尝试把一个断点并确保'_listDataChild'具有更正t值 – Tony

+0

@AESolutions您应该发布完整的堆栈跟踪。但是从你发布的内容你应该调试getChildrenCount()返回的内容。特别是如果没有什么可以从_listDataChild – portfoliobuilder

+0

确定没问题,我发布了完整的堆栈跟踪...它告诉我_listDataChild的大小是1(它应该是大小4),这是错误,但我不知道它为什么只有1元素 – AESolutions

回答

0

议决

我忘了把

listDataChild.put(listDataHeader.get(1), voti_materia[1]); 

内与索引i :(

for(int i=0; i<subjects.getCount();i++){ 
     voti_materia[i] = new ArrayList<>(i); 
     listDataHeader.add(subjects.getItemAtPosition(i).toString()); 
     listDataChild.put(listDataHeader.get(i), voti_materia[i]); // Header, Child data 
} 

谢谢大家!