I have to update an expandableList from server, I am using asyncTask to download and fill new values in local database, everything is done in doInBackground but after its done I tried to refresh my expandableList in onPostExecute but I am getting a nullPointer on the very statement which runs fine before loading new data. All I am doing is calling the same method which instializes expandableList in the first place..
The method which intializes list for the first time:
public void initializeExpandableList() {
// TODO Auto-generated method stub
getValuesForList();
setupList();
setupClickListenersOnExpandList();
}
And the code for getValuesForList()
and setUpList()
is:
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());
}
And for setUpList() method:
public void setupList() {
expList.setAdapter(adap);
// adap.notifyDataSetChanged();
((BaseAdapter) expList.getAdapter()).notifyDataSetChanged();
}
After inserting data in doInBackground(), inside onPostExecute I am calling a method refresh()
which again makes a call to initializeExpandableList() where I am getting null pointer.
private void refresh() {
// TODO Auto-generated method stub
initializeExpandableList();
}
Instead of initializeExpandableLIst, also tried
((BaseAdapter) expList.getAdapter()).notifyDataSetChanged();
and also tried restarting the activity:
Intent intent = getIntent();
finish();
startActivity(intent);
again getting null pointer in last line startActivity(intent);
What am I missing here??