Hemanth Somaraju Gudivada Hemanth Somaraju Gudivada - 1 year ago 76
Android Question

android expandablelistview using volley

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.util.HashMap.toString()' on a null object reference


i was not able to show in my fragment android expandable using volley
able to get response from server but it is showing error Null Pointer Exception

i was not able to show in my fragment android expandable using volley
able to get response from server but it is showing error Null Pointer Exception

thank you

public class NotificationFragment extends Fragment {
private static String url = "http://www.androidbegin.com/tutorial/jsonparsetutorial.txt";
private ProgressDialog mprocessingdialog;
private TextView tv_welcomeuser, tv_recentupdate;
private ExpandableListAdapter expandableListAdapter;
private ExpandableListView exp_leaseoffer;
private List<String> listDataHeader;
private View rootView;
private HashMap<String, List<String>> listDataChild;
String jsonstr;
RequestQueue requestQueue;





public static NotificationFragment newInstance() {
NotificationFrag

ment fragment = new NotificationFragment();
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_notification, container, false);



tv_welcomeuser = (TextView) view.findViewById(R.id.tv_welcomeuser);
tv_recentupdate = (TextView) view
.findViewById(R.id.tv_recentupdate);

exp_leaseoffer = (ExpandableListView) view.findViewById(R.id.lvExp);
listDataHeader = new ArrayList<String>();

new DownloadJason().execute();

return view;
}
private class DownloadJason extends AsyncTask<Void, Void, Void> {

@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
mprocessingdialog = new ProgressDialog(getActivity());
mprocessingdialog.setTitle("Please Wait..");
mprocessingdialog.setMessage("Loading");
mprocessingdialog.setIndeterminate(false);
mprocessingdialog.show();


}

@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub

StringRequest stringRequest = new StringRequest(Request.Method.GET,url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("rlog", response.toString());


jsonstr = response;


if (jsonstr != null) {

listDataHeader = new ArrayList<String>();
listDataChild = new HashMap<String, List<String>>();

try {
JSONObject jobj = new JSONObject(jsonstr);
JSONArray jarray = jobj.getJSONArray("worldpopulation");
for (int hk = 0; hk < jarray.length(); hk++) {
JSONObject d = jarray.getJSONObject(hk);
// Adding Header data

listDataHeader.add(d.getString("country"));
// Adding child data for lease offer
List<String> lease_offer = new ArrayList<String>();

lease_offer.add(d.getString("country") + "'s Rank is : "
+ d.getString("rank"));
lease_offer.add("And Population is "+d.getString("population"));
// Header into Child data
listDataChild.put(listDataHeader.get(hk), lease_offer);

}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("rlog", "Error: " + error.getMessage());

}
});

requestQueue = Volley.newRequestQueue(getActivity());
requestQueue.add(stringRequest);


return null;
}

@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
mprocessingdialog.dismiss();

expandableListAdapter = new ExpandableAdapter(
getActivity(), listDataHeader, listDataChild);
Log.i("groups", listDataHeader.toString());
Log.i("details", listDataChild.toString());
exp_leaseoffer.setAdapter(expandableListAdapter);

exp_leaseoffer.setOnGroupClickListener(new OnGroupClickListener() {

@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
// TODO Auto-generated method stub
return false;
}

});
// Listview Group expanded listener
exp_leaseoffer
.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {

@Override
public void onGroupExpand(int groupPosition) {

}
});
exp_leaseoffer
.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {

@Override
public void onGroupCollapse(int groupPosition) {
Toast.makeText(
getActivity().getApplicationContext(),
listDataHeader.get(groupPosition)
+ " Collapsed", Toast.LENGTH_SHORT)
.show();
}
});
exp_leaseoffer.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {

@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {


return false;
}
});

}
}


}

Answer Source

initialize & declare hashmap at the top

 private HashMap<String, List<String>> listDataChild = new  HashMap<String, List<String>> ();
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download