在一个活动中同时排序两个数组列表

时间:2017-03-17 06:44:03

标签: android arraylist

我正在处理应用程序,其中我想要一个输出,如下图所示。

enter image description here

为此我尝试了以下代码:

private ListView notification_listview;
    private String BeauticianId="98";
    private String serviceType="all";
    private ArrayList<NameValuePair> params11;
    ArrayList<MainArray_method> MainList;
    MainArray_adapter main_adapter;
    ArrayList<SubArray_method> SubList;
    SubArray_adapter sub_adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        notification_listview = (ListView) findViewById(R.id.listView_notification);

    }

    @Override
    public void onResume() {
        super.onResume();
        params11 = new ArrayList<NameValuePair>();
        params11.add(new BasicNameValuePair("iBeauticianId", BeauticianId));
        params11.add(new BasicNameValuePair("serviceType", serviceType));

        new background().execute();

    }

    private class background extends AsyncTask<Void, Void, String> {


        ProgressDialog pDialog = new ProgressDialog(MainActivity.this);

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog.setMessage("Please Wait...");
            pDialog.setCancelable(false);
            pDialog.show();

        }

        protected String doInBackground(Void... params) {
            String obj;//new JSONArray();
            try {
                obj = getJSONFromUrl("http://52.26.35.210/api/web/v1/api-beautician/services", params11);
                return obj;
            } catch (Exception e) {
            }
            return null;
        }

        @Override
        protected void onPostExecute(final String result) {
            super.onPostExecute(result);

            Log.e("Result", "" + result);

            try {
                JSONObject json = new JSONObject(result);
                String status = json.getString("status");
                Log.d("Status:", status);

                String data = json.getString("data");
                Log.d("Data:", data);


                MainList = new ArrayList<MainArray_method>();
                JSONArray MainArray = json.getJSONArray("data");

                for (int i = 0; i < MainArray.length(); i++) {

                    JSONObject jsonObject = MainArray.getJSONObject(i);

                    String MainServiceId = jsonObject.getString("iMainServiceId");
                    Log.d("MainServiceId:", MainServiceId);

                    String MainService = jsonObject.getString("main");
                    Log.d("MainService:", MainService);

                    String sub = jsonObject.getString("sub");
                    Log.d("sub:", sub);

                    SubList = new ArrayList<SubArray_method>();
                    JSONArray SubArray = jsonObject.getJSONArray("sub");
                    for (int j = 0; j < SubArray.length(); j++) {

                        /*JSONObject subjsonObject = SubArray.getJSONObject(j);*/

                        /*String SubServiceId = subjsonObject.getString("iSubServiceId");
                        Log.d("subserviceid:", SubServiceId);

                        String SubServiceName = subjsonObject.getString("vName");
                        Log.d("SubServiceName:", SubServiceName);

                        String SubServicePrice = subjsonObject.getString("fPrice");
                        Log.d("SubServicePrice:", SubServicePrice);

                        String SubServiceTime = subjsonObject.getString("vDuration");
                        Log.d("SubServiceTime:", SubServiceTime);*/
                        MainList.add(new MainArray_method(MainArray.getJSONObject(i).getString("iMainServiceId"),
                                MainArray.getJSONObject(i).getString("main")));

                        SubList.add(new SubArray_method(SubArray.getJSONObject(j).getString("iSubServiceId"),
                                SubArray.getJSONObject(j).getString("vName"),
                                SubArray.getJSONObject(j).getString("fPrice"),
                                SubArray.getJSONObject(j).getString("vDuration")));
                    }
                }


                if (main_adapter== null && sub_adapter == null)
                {
                    main_adapter=new MainArray_adapter(getApplicationContext(),MainList);
                    notification_listview.setAdapter(main_adapter);

                    sub_adapter=new SubArray_adapter(getApplicationContext(),SubList);
                    notification_listview.setAdapter(sub_adapter);

                } else {
                    sub_adapter.notifyDataSetChanged();
                    main_adapter.notifyDataSetChanged();
                }

            } catch (JSONException e1) {
                e1.printStackTrace();
            }
            pDialog.dismiss();
        }


        public String getJSONFromUrl(String url, List<NameValuePair> params) {
            InputStream is = null;
            String json = "";

            // Making HTTP request
            try {
                // defaultHttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params));
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(
                        is, "iso-8859-1"), 8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line);
                    //sb.append(line + "\n");
                }
                is.close();
                json = sb.toString();
                Log.e("JSON", json);
            } catch (Exception e) {
                Log.e("Buffer Error", "Error converting result " + e.toString());
            }
            return json;

        }
    }

但在这里我只得到两个子阵列的记录。 如何获得输出,如图所示。 提前谢谢。

JSON回复:

  {
   "status":1,
   "data":[
      {
         "iMainServiceId":1,
         "main":"NAILS",
         "sub":[
            {
               "iSubServiceId":1,
               "vName":"Manicure",
               "fPrice":15,
               "vDuration":"20 Minutes"
            },
            {
               "iSubServiceId":2,
               "vName":"Gel Manicure",
               "fPrice":25,
               "vDuration":"30 Minutes"
            },
            {
               "iSubServiceId":5,
               "vName":"Nail art ",
               "fPrice":10,
               "vDuration":"20 Minutes"
            },
            {
               "iSubServiceId":6,
               "vName":"Nail Pain ",
               "fPrice":10,
               "vDuration":"20 Minutes"
            }
         ]
      },
      {
         "iMainServiceId":2,
         "main":"HAIR",
         "sub":[
            {
               "iSubServiceId":3,
               "vName":"Haircuts",
               "fPrice":20,
               "vDuration":"30 Minutes"
            },
            {
               "iSubServiceId":4,
               "vName":"Hair color",
               "fPrice":50,
               "vDuration":"60 Minutes"
            },
            {
               "iSubServiceId":7,
               "vName":"Textures",
               "fPrice":20,
               "vDuration":"30 Minutes"
            },
            {
               "iSubServiceId":8,
               "vName":"Treatments",
               "fPrice":30,
               "vDuration":"60 Minutes"
            }
         ]
      },
      {
         "iMainServiceId":3,
         "main":"Face",
         "sub":[
            {
               "iSubServiceId":9,
               "vName":"Facials",
               "fPrice":20,
               "vDuration":"49 Minutes"
            },
            {
               "iSubServiceId":10,
               "vName":"Brow Bar",
               "fPrice":40,
               "vDuration":"49 Minutes"
            },
            {
               "iSubServiceId":11,
               "vName":"Makeup ",
               "fPrice":40,
               "vDuration":"49 Minutes"
            }
         ]
      },
      {
         "iMainServiceId":4,
         "main":"Body",
         "sub":[
            {
               "iSubServiceId":12,
               "vName":"Hair Removal",
               "fPrice":40,
               "vDuration":"49 Minutes"
            },
            {
               "iSubServiceId":13,
               "vName":"Body Treatments",
               "fPrice":30,
               "vDuration":"30 Minutes"
            }
         ]
      }
   ]
}

和wt我得到enter image description here输出是:

1 个答案:

答案 0 :(得分:0)

for (int i = 0; i < MainArray.length(); i++) {

    JSONObject jsonObject = MainArray.getJSONObject(i);

    String MainServiceId = jsonObject.getString("iMainServiceId");
    Log.d("MainServiceId:", MainServiceId);

    String MainService = jsonObject.getString("main");
    Log.d("MainService:", MainService);

    String sub = jsonObject.getString("sub");
    Log.d("sub:", sub);

    SubList = new ArrayList<SubArray_method>();
    JSONArray SubArray = jsonObject.getJSONArray("sub");
    for (int j = 0; j < SubArray.length(); j++) {

        /*JSONObject subjsonObject = SubArray.getJSONObject(j);*/

        /*String SubServiceId = subjsonObject.getString("iSubServiceId");
        Log.d("subserviceid:", SubServiceId);

        String SubServiceName = subjsonObject.getString("vName");
        Log.d("SubServiceName:", SubServiceName);

        String SubServicePrice = subjsonObject.getString("fPrice");
        Log.d("SubServicePrice:", SubServicePrice);

        String SubServiceTime = subjsonObject.getString("vDuration");
        Log.d("SubServiceTime:", SubServiceTime);*/


        SubList.add(new SubArray_method(SubArray.getJSONObject(j).getString("iSubServiceId"),
                SubArray.getJSONObject(j).getString("vName"),
                SubArray.getJSONObject(j).getString("fPrice"),
                SubArray.getJSONObject(j).getString("vDuration")));
    }
    // This should be in outer for loop<<---------------------<<<<<
    MainList.add(new MainArray_method(MainArray.getJSONObject(i).getString("iMainServiceId"),
                MainArray.getJSONObject(i).getString("main")));
}