我必须从服务器更新一个可扩展列表,我正在使用 asyncTask 下载并在本地数据库中填充新值,一切都在 doInBackground 中完成,但完成后我尝试在 onPostExecute 中刷新我的可扩展列表,但我在声明中得到了一个 nullPointer在加载新数据之前运行良好。我所做的只是调用首先初始化expandableList的相同方法..
首次初始化列表的方法:
public void initializeExpandableList() {
// TODO Auto-generated method stub
getValuesForList();
setupList();
setupClickListenersOnExpandList();
}
getValuesForList()
和的代码setUpList()
是:
public void getValuesForList() {
// get which list_id are present in subtopic table
DataBaseHelper myDbHelper = new DataBaseHelper(context);
ArrayList<String> ids = myDbHelper.getListIdsFromSubTopic();
ArrayList<String> typeList = myDbHelper.getTypeListFromDB(ids);
// typeList = myDbHelper.getTypeListFromDB();
Log.v("typelist", typeList + "");
arrGroupelements = typeList.toArray(new String[typeList.size()]);
Log.v("arrGrp", arrGroupelements.toString() + "");
ArrayList<ArrayList<String>> subtopics = myDbHelper.getChildForGroup();
arrChildelements = new String[subtopics.size()][];
for (int i = 0; i < subtopics.size(); i++) {
ArrayList<String> row = subtopics.get(i);
arrChildelements[i] = row.toArray(new String[row.size()]);
}
Log.e("arrChildElements", arrChildelements.toString());
}
对于 setUpList() 方法:
public void setupList() {
expList.setAdapter(adap);
// adap.notifyDataSetChanged();
((BaseAdapter) expList.getAdapter()).notifyDataSetChanged();
}
在 doInBackground() 中插入数据后,在 onPostExecute 内部,我正在调用一个方法,该方法refresh()
再次调用 initializeExpandableList(),我得到空指针。
private void refresh() {
// TODO Auto-generated method stub
initializeExpandableList();
}
而不是initializeExpandableLIst,也试过了
((BaseAdapter) expList.getAdapter()).notifyDataSetChanged();
并尝试重新启动活动:
Intent intent = getIntent();
finish();
startActivity(intent);
在最后一行再次获得空指针startActivity(intent);
我在这里想念什么?