【问题标题】:How to get category and Subcategory data from Json Using Volley如何使用 Volley 从 Json 获取类别和子类别数据
【发布时间】:2018-05-16 13:31:40
【问题描述】:

我点击下面的链接

但这对我没有帮助。

在此链接中,我将使用@Kuldip Kulkerni 的答案,我将获取数据,但它已按 DESC 顺序排列。

如何在我的 Recyclerview 中排列主类别和子类别并显示

我尝试了以下代码:

final JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
                url, jsonObject, new Response.Listener<JSONObject>() {


            @Override
            public void onResponse(JSONObject response) {
                Log.d(TAG, response.toString());

                try {

                    JSONArray jArray = response.getJSONArray("data");

                    for (int i = 0; i < jArray.length(); i++) {
                        JSONObject json_data = jArray.getJSONObject(i);

                        Pojo dataPojo = new Pojo();
                        dataPojo.id = json_data.getString("category_id");
                        dataPojo.fname = json_data.getString("category_name");
                        dataPojo.thumbnailUrl = json_data.getString("category_image");
                        dataList.add(i, dataPojo);

                        JSONArray jArray1 = json_data.getJSONArray("subcategory");

                        for (int j = 0; j < jArray1.length(); j++) {
                            JSONObject json_data1 = jArray1.getJSONObject(j);

                            Pojo dataPojo1 = new Pojo();
                            dataPojo1.id2 = json_data1.getString("category_id");
                            dataPojo1.fname2 = json_data1.getString("category_name");
                            dataList.add(j, dataPojo1);
                        }

                    }

                    dataAdapter = new DataAdapter(dataList);
                    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
                    recyclerView.setLayoutManager(mLayoutManager);
                    recyclerView.setItemAnimator(new DefaultItemAnimator());
                    recyclerView.setAdapter(dataAdapter);
                    dataAdapter.notifyDataSetChanged();

                }
  • 以上代码是获取主类数据但无法获取子类数据

下面是我的Pojo.java 类:

public class Pojo {

    public String id;
    public String fname;
    public String thumbnailUrl;
    public String id2;
    public String fname2;

    public Pojo() {
    }

    public Pojo(String id, String fname, String thumbnailUrl, String id2, String fname2) {
        this.id = id;
        this.fname = fname;
        this.thumbnailUrl = thumbnailUrl;
        this.id2 = id2;
        this.fname2 = fname2;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getFname() {
        return fname;
    }

    public void setFname(String fname) {
        this.fname = fname;
    }

    public String getThumbnailUrl() {
        return thumbnailUrl;
    }

    public void setThumbnailUrl(String thumbnailUrl) {
        this.thumbnailUrl = thumbnailUrl;
    }

    public String getId2() {
        return id2;
    }

    public void setId2(String id2) {
        this.id2 = id2;
    }

    public String getFname2() {
        return fname2;
    }

    public void setFname2(String fname2) {
        this.fname2 = fname2;
    }

}

Json 回复:

那么我该如何解决这个问题,任何人都可以帮忙

关注@Birju 回答后的 EIDT 问题

提前致谢。 :)

【问题讨论】:

  • 如何使用改造和 moshi/gson 来简化事情? :)

标签: java android json


【解决方案1】:

Pojo 类的变化

public class Pojo {

private String catagory_id;
private String catagory_name;
private String catagory_thumbnailUrl;
private ArrayList<SubCatagory> subCatagoryArrayList;

public ArrayList<SubCatagory> getSubCatagoryArrayList() {
    return subCatagoryArrayList;
}

public void setSubCatagoryArrayList(ArrayList<SubCatagory> subCatagoryArrayList) {
    this.subCatagoryArrayList = subCatagoryArrayList;
}

public String getCatagory_id() {
    return catagory_id;
}

public void setCatagory_id(String catagory_id) {
    this.catagory_id = catagory_id;
}

public String getCatagory_name() {
    return catagory_name;
}

public void setCatagory_name(String catagory_name) {
    this.catagory_name = catagory_name;
}

public String getCatagory_thumbnailUrl() {
    return catagory_thumbnailUrl;
}

public void setCatagory_thumbnailUrl(String catagory_thumbnailUrl) {
    this.catagory_thumbnailUrl = catagory_thumbnailUrl;
}
}

添加新类作为子类别

public class SubCatagory {
private String subcatagory_id;
private String subcatagory_name;


public String getSubcatagory_id() {
    return subcatagory_id;
}

public void setSubcatagory_id(String subcatagory_id) {
    this.subcatagory_id = subcatagory_id;
}

public String getSubcatagory_name() {
    return subcatagory_name;
}

public void setSubcatagory_name(String subcatagory_name) {
    this.subcatagory_name = subcatagory_name;
}
}

在你的 onResponce() 中

  try {

                JSONArray jArray = response.getJSONArray("data");

                for (int i = 0; i < jArray.length(); i++) {
                    JSONObject json_data = jArray.getJSONObject(i);

                    Pojo dataPojo = new Pojo(); //this is catagory class
                    dataPojo.setCatagory_id(json_data.getString("category_id"));
                    dataPojo.setCatagory_name(json_data.getString("category_name"));
                    dataPojo.setCatagory_thumbnailUrl(json_data.getString("category_image"));


                    JSONArray jArray1 = json_data.getJSONArray("subcategory");

                    ArrayList<SubCatagory> subCatagoryArrayList = new ArrayList<>();
                    for (int j = 0; j < jArray1.length(); j++) {
                        JSONObject json_data1 = jArray1.getJSONObject(j);

                        SubCatagory subCatagory = new SubCatagory(); // this is subcatagory class
                        subCatagory.setSubcatagory_id(json_data1.getString("category_id"));
                        subCatagory.setSubcatagory_name(json_data1.getString("category_name"));
                        subCatagoryArrayList.add(subCatagory);
                    }
                    dataPojo.setSubCatagoryArrayList(subCatagoryArrayList);//this i insert subcatagory in catagory 
                    dataList.add(dataPojo); // and after i add catagory to datalist 
                }

              /*  dataAdapter = new DataAdapter(dataList);
                RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
                recyclerView.setLayoutManager(mLayoutManager);
                recyclerView.setItemAnimator(new DefaultItemAnimator());
                recyclerView.setAdapter(dataAdapter);
                dataAdapter.notifyDataSetChanged();*/
  }

注意:- 1 评论 recyclerviewdataadapter 并在调试模式下检查 responce vales,因为我使用 getter setter 作为变量(用于遵循编码结构:dont make变量公开...

  • 2 不要直接替换我的代码...先注释掉你的旧代码

在你的内部

dataadapter -> 在方法 onbindviewholder(){

Pojo 类别=dataList.get(位置); // 这给你分类

Arraylist 子类别 = catagory.getSubCatagoryArrayList();///这是子类别 arraylist...使用for循环可以获得子类数据

}

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 1970-01-01
    • 2021-12-21
    • 2013-06-13
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    相关资源
    最近更新 更多