2013-11-20 65 views
0

我想在另一種方法中調用setAdapter(),但在同一個類/活動上調用setAdapter()。但是,它給了我一個空指針異常。我有一個ListView lv = null;作爲一個領域。在另一種方法中調用setAdapter()不起作用

當setAdapter()是的onCreate()裏面,它的工作:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     new SemToGradeLoader(this).execute(); 
     setContentView(R.layout.activity_grade_book); 
     lv = (ListView) findViewById(R.id.grade_list); 
     reloadListView(); 
CustomListViewAdapter adapter = new CustomListViewAdapter(this, R.layout.list_item_grade, rowItems); 
     lv.setAdapter(adapter); 

    } 

當setAdapter是reloadListView()內,這是行不通的:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    new SemToGradeLoader(this).execute(); 
    setContentView(R.layout.activity_grade_book); 
    lv = (ListView) findViewById(R.id.grade_list); 
    reloadListView(); 

} 

這裏我reloadListView():

private void reloadListView() { 

    try { 

     rowItems = new ArrayList<RowItem>(); 
     for (int i = 0; i < subjects.length; i++) { 
      RowItem item = new RowItem(subjects[i], descriptions[i]); 
      rowItems.add(item); 
     } 
     CustomListViewAdapter adapter = new CustomListViewAdapter(this, R.layout.list_item_grade, rowItems); 
     lv.setAdapter(adapter); 
    } 


    catch (IndexOutOfBoundsException e) { 

    } 
+0

您可以發佈您的班級的完整代碼以及您的佈局代碼嗎? – gahfy

+0

是從你班上任何其他地方調用的reloadListView? – Rich

+1

什麼是「科目」,它在哪裏初始化?在調用此函數之前,它似乎沒有被初始化。如果這不是問題,那麼請發佈logcat輸出,以便我們可以確切地看到「null」的位置。 – codeMagic

回答

0

的是:

new SemToGradeLoader(this).execute(); 

這是一個異步任務或什麼?

從它完成的方法,你想通過調用reloadListView()或什麼來訪問列表視圖?

相關問題