1

I have two Listview,I am getting two JSONArray from server,I am getting following response

[
    [
        {
            "user_status": "1",
            "pooja_name": "Festival Sevas",
            "sess_date": "Mon Nov 30 2015",
            "session_status": "Completed",
            "message": "What ever message you want"
        }
    ],
    [
        {
            "user_status": "1",
            "pooja_name": "Pushpalankara Seva",
            "sess_date": "Tue Dec 15 2015",
            "session_status": "Pending",
            "message": "What ever message you want"
        }
    ]
]

I am able to parse both the arrays,but in my both listview it display Pushpalankara Seva,what i am trying is in my first listview i want to display Pushpalankara Seva and in second Festival Sevas

class LoadPoojas extends AsyncTask<String, String, ArrayList<HashMap<String,String>>> {
        /**
         * Before starting background thread Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(AboutUsFragment.this.getActivity());
            pDialog.setMessage("Loading...");
            pDialog.setIndeterminate(true);
            pDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.custom_progress));
            pDialog.setCancelable(false);
            pDialog.show();
        }
        protected ArrayList<HashMap<String,String>> doInBackground(String... args) {
            ServiceHandler sh = new ServiceHandler();
            // Making a request to url and getting response
            ArrayList<HashMap<String,String>> data = new ArrayList<HashMap<String, String>>();
            ArrayList<HashMap<String,String>> upcomingdata = new ArrayList<HashMap<String, String>>();
            String jsonStr = sh.makeServiceCall(POOJA_LISTING_URL, ServiceHandler.GET);
            map = new HashMap<String, String>();
            Log.d("Response: ", "> " + jsonStr);

            if (jsonStr != null) {
                try {
                    JSONArray jsonObj = new JSONArray(jsonStr);

                    // Getting JSON Array node

                    JSONArray pastarray = jsonObj.getJSONArray(0);
                    for (int i = 0; i < pastarray.length(); i++) {
                        JSONObject c = pastarray.getJSONObject(i);
                        // creating new HashMap

                        // adding each child node to HashMap key => value
                        map.put(POOJA_LISTING_NAME, c.getString(POOJA_LISTING_NAME));


                    }


                    JSONArray upcoming = jsonObj.getJSONArray(1);
                    for (int i = 0; i < upcoming.length(); i++) {
                        JSONObject c = upcoming.getJSONObject(i);
                        // creating new HashMap
                      //  HashMap<String, String> upcomingmap = new HashMap<String, String>();
                        // adding each child node to HashMap key => value
                        map.put(POOJA_LISTING_NAME, c.getString(POOJA_LISTING_NAME));



                    }
                    data.add(map);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            } else {
                Log.e("ServiceHandler", "Couldn't get any data from the url");
            }
            return data;
        }
        protected void onPostExecute(ArrayList<HashMap<String,String>> result) {
            super.onPostExecute(result);
            /*if(interestaccept == null || interestaccept.length() == 0){
                // Toast.makeText(getApplicationContext(), "No response", Toast.LENGTH_SHORT).show();
                noacpt.setText("  No Accepted List  ");
            }
            else
            {
                noacpt.setVisibility(View.INVISIBLE);
            }*/
            // dismiss the dialog after getting all albums
            if (pDialog.isShowing())
                pDialog.dismiss();
            // updating UI from Background Thread

            aList = new ArrayList<HashMap<String, String>>();
            aList.addAll(result);
            adapter = new CustomAdapterPooja(getActivity(),result);
            completedpooja.setAdapter(adapter);
            adapterupcoming = new CustomAdapterPoojaUpcoming(getActivity(),result);
            notcompletedpooja.setAdapter(adapterupcoming);
            adapter.notifyDataSetChanged();
            adapterupcoming.notifyDataSetChanged();



            completedpooja.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {


                }
            });


           /* upcomingaList = new ArrayList<HashMap<String, String>>();
            upcomingaList.addAll(result);
            adapterupcoming = new CustomAdapterPoojaUpcoming(getActivity(),result);
            notcompletedpooja.setAdapter(adapterupcoming);

            adapterupcoming.notifyDataSetChanged();

            notcompletedpooja.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {


                }
            });*/

        }

    }
0

1 Answer 1

1

I checked you code and found you did mistake in hashmap with same key in both array(inside both For loop). So it overwrite with latest value as per rules of hashmap.

Solution :

Option 1: Take arraylist of hashmap and create new hashmap each new record.

Option 2: Take arraylist of POJO class.

Edit :

public class UserPOJO {


    public String user_status;
    public String pooja_name;
    public String sess_date;
    public String session_status;
    public String message;

}

Take arraylist of POJO class like below

public ArrayList<UserPOJO> userPOJOs = new ArrayList<UserPOJO>();

Now insert data in arraylist from JSONArray.

Sign up to request clarification or add additional context in comments.

6 Comments

need to create anther arraylist??
what if i need to do without pojo
Create map object in each time in for loop and add into arraylist of hashmap at last point of for loop.
data.add(map); inside for loop at last line.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.