java - 如何使用 Volley 从 Json 获取类别和子类别数据

标签 java android json

我点击下面的链接

但这对我没有帮助。

在此链接中,我将使用@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 响应:

enter image description here

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

@Birju 回答后出现 EIDT 问题

enter image description here

提前致谢。 :)

最佳答案

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 并在 Debug模式下检查 responce 值,因为我使用 getter setter 用于变量(遵循编码结构:不要将变量公开...

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

在你的里面

dataadapter -> in method onbindviewholder(){

Pojo catagory=dataList.get(position); // this give you catagory

Arraylist subcatagory = catagory.getSubCatagoryArrayList();///this is subcatagory arraylist...using for loop you can get subcatagory data

}

关于java - 如何使用 Volley 从 Json 获取类别和子类别数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50372333/

相关文章:

java - Android 从 Kotlin 调用非静态 Java 方法

java - txt文件的读取输出有空格

java - JVM内部是如何工作的

android - scp/secure 从远程 android 设备/SSH 服务器复制最新文件

php - PHP 和 JavaScript 模板的互换性(防止重复)

java - Spring 启动 1.4 : Executing Method after Liquibase finished

java - 嵌套的 LinearLayouts LayoutTransition 动画在移除子项时跳转

android - 如何使用 DrawerLayout 显示在 ActionBar/Toolbar 之上和状态栏之下?

c# - 如何在 C# 中使用多个列表选择检查 null 条件?

javascript - 获取具有以选定字母开头的 "name"属性的数组中第一个对象的索引