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) {
}
您可以發佈您的班級的完整代碼以及您的佈局代碼嗎? – gahfy
是從你班上任何其他地方調用的reloadListView? – Rich
什麼是「科目」,它在哪裏初始化?在調用此函數之前,它似乎沒有被初始化。如果這不是問題,那麼請發佈logcat輸出,以便我們可以確切地看到「null」的位置。 – codeMagic