0

我必须从服务器更新一个可扩展列表,我正在使用 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);

我在这里想念什么?

4

0 回答 0