0

サーバーから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);

ここで何が欠けていますか??

4

0 に答える 0