首页 > 解决方案 > 如何在recyclerview android中显示内部json数组

问题描述

我想在 Recyclerview 中显示内部 json 数组。
我在 logcat 中获取所有数据。
但我的问题是如何在适配器类中为内部数组项编写代码。
我的问题就像这个问题
How to get data from nested json array android

我有类似的 json 数组。
我想将数组列表传递给适配器。

这是我的模态

public class OuterModal {
String menuId;
String menuName;
private List<InnerModal> innerItem;

public String getMenuId() {
    return menuId;
}

public void setMenuId(String menuId) {
    this.menuId = menuId;
}

public String getMenuName() {
    return menuName;
}

public void setMenuName(String menuName) {
    this.menuName = menuName;
}

public List<InnerModal> getInnerItem() {
    return innerItem;
}

public void setInnerItem(List<InnerModal> innerItem) {
    this.innerItem = innerItem;
}

}

这是我的另一个模态

public class InnerModal {
String vendor_item_id;
String vendor_id;
String vendor_item_name;
String vendor_item_image;
String vendor_item_price;
String vendor_item_category;
String vendor_item_description;
String vendor_item_status;

public String getVendor_item_id() {
    return vendor_item_id;
}

public void setVendor_item_id(String vendor_item_id) {
    this.vendor_item_id = vendor_item_id;
}

public String getVendor_id() {
    return vendor_id;
}

public void setVendor_id(String vendor_id) {
    this.vendor_id = vendor_id;
}

public String getVendor_item_name() {
    return vendor_item_name;
}

public void setVendor_item_name(String vendor_item_name) {
    this.vendor_item_name = vendor_item_name;
}

public String getVendor_item_image() {
    return vendor_item_image;
}

public void setVendor_item_image(String vendor_item_image) {
    this.vendor_item_image = vendor_item_image;
}

public String getVendor_item_price() {
    return vendor_item_price;
}

public void setVendor_item_price(String vendor_item_price) {
    this.vendor_item_price = vendor_item_price;
}

public String getVendor_item_category() {
    return vendor_item_category;
}

public void setVendor_item_category(String vendor_item_category) {
    this.vendor_item_category = vendor_item_category;
}

public String getVendor_item_description() {
    return vendor_item_description;
}

public void setVendor_item_description(String vendor_item_description) {
    this.vendor_item_description = vendor_item_description;
}

public String getVendor_item_status() {
    return vendor_item_status;
}

public void setVendor_item_status(String vendor_item_status) {
    this.vendor_item_status = vendor_item_status;
}

}

这是 JSON 响应

 StringRequest stringRequest = new StringRequest(Request.Method.GET,
                        mainUrl, new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonObject = new JSONObject(response);
                            JSONArray jsonArray = jsonObject.getJSONArray("menu");
                            List<OuterModal> outerModalList=new ArrayList<>();
                            OuterModal outerModal=new OuterModal();
                            for (int i = 0; i < jsonArray.length(); i++) {

                                JSONObject json = jsonArray.getJSONObject(i);
                                String menu_id = json.getString("menu_id");
                                String menu_name = json.getString("menu_name");
                                outerModal.setMenuId(menu_id);
                                outerModal.setMenuName(menu_name);
                                JSONArray productsListArray = json.getJSONArray("Products List");
                                for (int j = 0; j < productsListArray.length(); j++) {

                                   // Log.d("myDraaa", "list responce:" + productsListArray);

                                    JSONObject productsListjson = productsListArray.getJSONObject(j);
                                    InnerModal innerModal=new InnerModal();
                                    List<InnerModal> innerModalList=new ArrayList<>();
                                    String vendor_item_id = productsListjson.getString("vendor_item_id");
                                    String vendor_id = productsListjson.getString("vendor_id");
                                    String vendor_item_name = productsListjson.getString("vendor_item_name");
                                    String vendor_item_image = productsListjson.getString("vendor_item_image");
                                    String vendor_item_status = productsListjson.getString("vendor_item_status");
                                    String quantity = productsListjson.getString("quantity");
                                    innerModal.setVendor_id(vendor_id);
                                    innerModal.setVendor_item_id(vendor_item_id);
                                    innerModal.setVendor_item_category("");
                                    innerModal.setVendor_item_description("");
                                    innerModal.setVendor_item_image(vendor_item_image);
                                    innerModal.setVendor_item_name(vendor_item_name);
                                    innerModal.setVendor_item_status(vendor_item_status);
                                    innerModal.setVendor_item_price(quantity);

                                    outerModal.getInnerItem().add(innerModal);
                                }
                                outerModalList.add(outerModal);
                            }


public class SecondAdapter extends RecyclerView.Adapter<SecondAdapter.SecondVH> {
    List<OuterModal> arrayList;
    Context context;
    public SecondAdapter(List<OuterModal> arrayList, Context context) {
        this.arrayList = arrayList;
        this.context = context;
    }


    @NonNull
    @Override
    public SecondVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(context).inflate(R.layout.my_custom_style, null, false);
        return new SecondVH(v);
    }

    @Override
    public void onBindViewHolder(@NonNull SecondVH holder, final int position) {

        OuterModal outerModal=arrayList.get(position);
        holder.title.setText(outerModal.getMenuName());

    }

    @Override
    public int getItemCount() {
        return arrayList.size();
    }

    public class SecondVH extends RecyclerView.ViewHolder {
        TextView title;
        TextView items;
        ConstraintLayout constraintLayout;

        TextView itemName, itemPrice, itemDescription;


        public SecondVH(View itemView) {
            super(itemView);
            title = itemView.findViewById(R.id.bestSellers);
            items = itemView.findViewById(R.id.myCustItemName);
            constraintLayout = itemView.findViewById(R.id.csL);
            itemPrice = itemView.findViewById(R.id.itemPrice);
            itemDescription = itemView.findViewById(R.id.itemDesc);
        }
    }
}

提前致谢。
请帮我。

标签: androidjsonandroid-recyclerview

解决方案


推荐阅读