サーバーからexpandableListを更新する必要があります.asyncTaskを使用してローカルデータベースに新しい値をダウンロードして入力しています.すべてはdoInBackgroundで行われます.新しいデータをロードする前に正常に実行されます。私がやっているのは、最初に 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()
null ポインターを取得している initializeExpandableList() を再度呼び出すメソッドを呼び出しています。
private void refresh() {
// TODO Auto-generated method stub
initializeExpandableList();
}
initializeExpandableLIst の代わりに、こちらも試してみました
((BaseAdapter) expList.getAdapter()).notifyDataSetChanged();
また、アクティビティを再開しようとしました:
Intent intent = getIntent();
finish();
startActivity(intent);
最後の行で再びnullポインターを取得するstartActivity(intent);
ここで何が欠けていますか??