2015-06-01 81 views
0

我已經添加ExpandableListView我的應用程序按照本教程:的Android ExpandableListView使應用程序崩潰

http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/

現在這之後,當我運行的應用程序崩潰。

這是我在MainActivity代碼:

public class MainActivity extends FragmentActivity { 

ViewPager viewpager; 
ExpandableListAdapter listAdapter; 
ExpandableListView expListView; 
List<String> listDataHeader; 
HashMap<String, List<String>> listDataChild; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    viewpager = (ViewPager) findViewById(R.id.pager); 
    PagerAdapter padapter = new PagerAdapter(getSupportFragmentManager()); 
     viewpager.setAdapter(padapter); 

    expListView = (ExpandableListView) findViewById(R.id.lvExp); 
    prepareListData(); 
    listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild); 
    expListView.setAdapter(listAdapter); 

} 

private void prepareListData(){ 
    listDataHeader = new ArrayList<String>(); 
    listDataChild = new HashMap<String, List<String>>(); 

    List<String> top250 = new ArrayList<String>(); 
    top250.add("250"); 

    List<String> test = new ArrayList<String>(); 
    test.add("Din mamma"); 

    listDataChild.put(listDataHeader.get(0), top250); 
    listDataChild.put(listDataHeader.get(1), test); 
} 

} 

這些都是不告訴我這麼多,只是有一個問題,在這行錯誤:

at com.hoyer_group.hoyer.MainActivity.prepareListData(MainActivity.java:53) 
at com.hoyer_group.hoyer.MainActivity.onCreate(MainActivity.java:37) 

行37 :

prepareListData(); 

行53:

listDataChild.put(listDataHeader.get(0), top250); 

希望對此有所澄清。 謝謝。

+0

你能給出錯誤的類型嗎?也許'NullPointerException'或類似的東西? –

+0

這裏是我所得到的logcat的: 06-01 22:47:05.786 28739-28739/com.hoyer_group.hoyer E/AndroidRuntime:致命異常:主要 過程:com.hoyer_group.hoyer,PID:28739 java.lang.RuntimeException:無法啓動活動ComponentInfo {com.hoyer_group.hoyer/com.hoyer_group.hoyer.MainActivity}:java.lang.IndexOutOfBoundsException:索引0無效,大小爲0 at android.app.ActivityThread.performLaunchActivity( ActivityThread.java:2436) –

回答

0

listDataChild.put(listDataHeader.get(0), top250);

你listDataHeader中沒有任何元素,但你要訪問的第一個元素。

+0

我在prepareListData中添加了listDataHeader.add(「top250」)和listDataHeader.add(「test」),現在我得到錯誤:「java.lang.NullPointerException」,已經在我的自定義適配器並且不會在任何我能看到的地方返回null。 –

0

我認爲你listDataHeader列表是空的,所以,如果你試圖get任何價值,它什麼也得不到,所以這是你的錯誤,也有在列表中沒有的元素

+0

已將項目添加到我的listDataHeader,現在我得到NullPointerException在行:「expListView.setAdapter(listAdapter);」 –

0

listDataChild.put(listDataHeader.get(0), top250); 
listDataChild.put(listDataHeader.get(1), test); 

您正試圖從listDataHeader獲取數據,並且在您向我們顯示的代碼中,您沒有在任何地方使用listDataHeader.put

因此,logcat的錯誤是有意義的:

IndexOutOfBoundsException: Invalid index 0, size is 0 

listDataHeader.get(0)對應。