使用数组值将jsonarray数据拆分为多个列表

时间:2019-01-24 11:42:55

标签: java android arraylist

我想根据现有数据拆分ArrayList,就像 类别等。

我尝试嵌套for循环并将其添加到列表中。但这不起作用。

String url = "http://27.147.169.230/UpSkillService/UpSkillsService.svc/" + "GetCNCCourseDefByorg/" + 1 +"/" +1;   

Ion.with(getApplicationContext())
                .load("GET",url)
                .setBodyParameter("","")
                .asString()
                .setCallback(new FutureCallback<String>() {
                    @Override
                    public void onCompleted(Exception e, String result) {
                        Log.d("Result",result);
                        try {
                            JSONObject obj =new JSONObject(result);
                            JSONArray jsonArray = obj.getJSONArray("GetCNCCourseDefByorgResult");
                            //Arrays.sort(new JSONArray[]{jsonArray});


                            if(obj.isNull("GetCNCCourseDefByorgResult"))
                            {
                                Toast.makeText(getApplicationContext(),"No Course Found",Toast.LENGTH_SHORT).show();
                            }
                            else if (!obj.equals(null)) {
                                String cata="";
                                Log.d("Resul3", jsonArray.toString());
                                for (int i = 0; i < jsonArray.length(); i++) {
                                    final CourseCatagory catagoryModel = new CourseCatagory();
                                    JSONObject course = jsonArray.getJSONObject(i);
                                    CourseList courselist = new CourseList();
                                    if(cata!=course.getString("CategoryName"))
                                    {
                                        Log.d("Catagory",cata);
                                        catagoryModel.setCategoryName(course.getString("CategoryName"));



                                        arrayListcatagory.add(catagoryModel);

                                        for (int j=0;j<jsonArray.length();j++)
                                        {
                                            JSONObject cat1 = jsonArray.getJSONObject(j);
                                            cata=cat1.getString("CategoryName");
                                            Log.d("cat",cata);
                                            if(cat1.getString("CategoryName")==course.getString("CategoryName"))
                                            {
                                                courselist.setCourseName(cat1.getString("CourseName"));
                                                courselist.setCourseCode(cat1.getString("CourseCode"));
                                                courselist.setWishFlag(cat1.getInt("WishFlag"));
                                                Log.d("Course",cat1.getString("CourseName"));
                                                arrayListcourse.add(courselist);

                                            }
                                            else {

                                            }

                                        }

                                    }
                       catagoryModel.setCourseList(arrayListcourse);

                                }

                                adapter.notifyDataSetChanged();
                               }

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

` 我想作为分类,在显示与分类名称相匹配的分类过程中显示。

  1. Accounting>介绍性会计,高级会计
  2. 财务>简介财务

1 个答案:

答案 0 :(得分:0)

您可以使用HashMap<String,ArrayList<CategoryDetails>>解决问题。

首先创建CategoryDe​​tails POJO类

   class CategoryDetails {

    private courseName;
    private courseCode;
    private wishFlag;

   //make setter and getter methods for above fields.

    }

然后使用类别名称作为HashMap中的关键字,以区分答案的第一行。

Map<String,ArrayList<CategoryDetails>> listCategory = new HashMap<String,ArrayList<CategoryDetails>>;