-2

I am beginner to android app. I am facing trouble how to parse json object and json array to listview in android. Here is my json output

UPDATED WITH JSON CORRECTION

{status: "ok", listUsers: [{"id":2,"username":"myusername","name":"myname","email":"myemail","password":"mypassword","groupid":1,"type":"mytype"},{"id":3,"username":"myusername","name":"myname","email":"myemail2","password":"mypassword2","groupid":1,"type":"mytype"},{"id":4,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":5,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":6,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":7,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":8,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":9,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":10,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":11,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"1"},{"id":12,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":13,"username":"yuwah","name":"yu","email":"mail@gmail.com","password":"pass1","groupid":1,"type":"type1"},{"id":14,"username":"myusername","name":"myname","email":"myemail2","password":"mypassword2","groupid":1,"type":"mytype"}] }

Can anyone explain me how to do it. I am searching all over the topics but I still can't get it. Thanks. Here is my code block

public class MainActivity extends ListActivity {

String url = "http://staging.workberryplus.com/mobile/listUsers/1";
ProgressDialog PD;

ArrayList<String> listUsers;
ArrayAdapter<String> adapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    listUsers = new ArrayList<String>();

    PD = new ProgressDialog(this);
    PD.setMessage("Loading.....");
    PD.setCancelable(false);

    adapter = new ArrayAdapter(this, R.layout.items, R.id.tv, listUsers);
    setListAdapter(adapter);

    MakeJsonArrayReq();
    // ATTENTION: This was auto-generated to implement the App Indexing API.
    // See https://g.co/AppIndexing/AndroidStudio for more information.
}

private void MakeJsonArrayReq() {
    PD.show();

    //JsonArrayRequest jr=new JsonArrayRequest(url, listener, errorListener)


    final StringRequest jreq = new StringRequest(url,
            new Response.Listener<String>() {

                @Override
                public void onResponse(String response) {

                    for (int i = 0; i < response.length(); i++) {
                        try {
                            Log.d("Response","->"+response);
                            JSONObject jo = new JSONObject(response);
                            JSONArray jarray = jo.getJSONArray("listUsers");
                            JSONObject jo2 = jarray.getJSONObject(i);
                            String name = jo2.getString("name");
                            listUsers.add(name);

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }

                    PD.dismiss();
                    adapter.notifyDataSetChanged();
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
        }
    });

    MyApplication.getInstance().addToReqQueue(jreq, "jreq");
}

}

M. Mariscal
  • 1,226
  • 3
  • 17
  • 46
tontonlayxx
  • 33
  • 1
  • 1
  • 10

3 Answers3

2
     try {
           JSONObject jo = new JSONObject(response);
           JSONArray jarray =jo.getJSONArray("listUsers");  

           for (int i = 0; i < jarray.length(); i++){                        
                JSONObject jo2 = jarray.getJSONObject(i);
                String name = jo2.getString("name");
                listUsers.add(name);
              }
            } catch (JSONException e) {
                e.printStackTrace();
            }
Ramesh Kanuganti
  • 275
  • 1
  • 11
0

Convert your String which is response to Json Object

JSONObject jsonObj = new JSONObject(response);

Then do the following

 try {
            if (jsonObj != null) {
                if (jsonObj.optString("status").equals("ok")) {
                    JSONArray jsonArray = jsonObj.optJSONArray("listUsers");
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject jsonObject = jsonArray.optJSONObject(i);
                        if (jsonObject != null) {
                           //Do work here


                        }
                    }
}
}
}catch (Exception e1) {
                e1.printStackTrace();
            }

try this and make changes accordingly and let me know if it work for you or not

Rakshit Nawani
  • 2,604
  • 14
  • 27
  • it is still not OK bro. The logcat says {java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONArray.length()' on a null object reference} – tontonlayxx Mar 29 '16 at 11:38
0
JSONObject jo2 = jarray.getJSONObject(i);

You are iterating over the length of the response (a string). You should iterate over the length of jarray

JesusS
  • 1,645
  • 1
  • 18
  • 31