我点击下面的链接
但这对我没有帮助。
在此链接中,我将使用@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 问题
提前致谢。 :)
最佳答案
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 注释 recyclerview
和 dataadapter
并在 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/