【问题标题】:How do I show specific category in Recycler view from JSON如何在 JSON 的 Recycler 视图中显示特定类别
【发布时间】:2021-11-22 09:28:59
【问题描述】:

我想将项目数据添加到仅特定类别的 recyclerview。 例如,在我的 JSON 中,您可以看到 cab 类别中有 2 个项目,所以我只想添加这 2 个项目,反之亦然,如果类别等于“卡车”,那么我只想添加所有卡车类别项目。

这是我的 JAVA

   @Override
                    public void onResponse(String response) {
                        try {
                            JSONArray jsonArray = new JSONArray(response);
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject jsonObject = jsonArray.getJSONObject(i);

                                String category = jsonObject.getString("category_name");

                           //////  /* stuckk here???   if (category.contains("cabs"))*/ /////
                            
                                    JSONArray JsonArray = jsonObject.getJSONArray("projects");

                                    for (int ii = 0; ii < JsonArray.length(); ii++) {
                                        JSONObject jObject = JsonArray.getJSONObject(ii);

                                        p_id = jObject.getString("id");
                                        p_name = jObject.getString("name");
                                     
                                    }

                                ProjectItemModel projectItemModel = new ProjectItemModel(p_id, p_name);
                                ProjectList.add(projectItemModel);                 
                            }

                            mAdapter = new ProjectAdapter(ProjectList);
                            RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(context);
                            project_rv.setLayoutManager(layoutManager);
                            project_rv.setAdapter(mAdapter);

这是我的 JSON API 调用

[
    {
        "category_name": "Cabs",
        "category_image": "cab.png",
        "projects": [
            {
                "id": "1002",
                "uid": "SP1001",
                "name": "car1"        
            }
        ]
    },{
        "category_name": "Cabs",
        "category_image": "cab.png",
        "projects": [
            {
                "id": "1003",
                "uid": "SP1003",
                "name": "car2"        
            }
        ]
    },{
        "category_name": "Truck",
        "category_image": "truck.png",
        "projects": [
            {
                "id": "1001",
                "uid": "SP1001",
                "name": "Truck1"        
            }
        ]
    }
]

请帮我解决这个问题谢谢

【问题讨论】:

    标签: java android json android-volley


    【解决方案1】:

    您的问题在于列出项目

     ArrayList<String> categories_to_display=new ArrayList();
    public void onResponse(String response) {
        ArrayList<ProjectItemModel> ProjectList = new ArrayList<ProjectItemModel>();
        try {
            JSONArray jsonArray = new JSONArray(response);
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject = jsonArray.getJSONObject(i);
    
                String category = jsonObject.getString("category_name");
    
                //////  /* stuckk here???   if (category.contains("cabs"))*/ /////
    //                if (category.equalsIgnoreCase("carbs")) {//you could use this for only one category
                if (categories_to_display.contains(category)) {
    
                    JSONArray JsonArray = jsonObject.getJSONArray("projects");
    
                    for (int ii = 0; ii < JsonArray.length(); ii++) {
                        JSONObject jObject = JsonArray.getJSONObject(ii);
    
    //        p_id = jObject.getString("id");
    //        p_name = jObject.getString("name");
                        ProjectItemModel projectItemModel = new ProjectItemModel(jObject.getString("id"), jObject.getString("name"));
                        ProjectList.add(projectItemModel);
                    }
    
    
                }
            }
    
            mAdapter = new ProjectAdapter(ProjectList);
            RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(context);
            project_rv.setLayoutManager(layoutManager);
            project_rv.setAdapter(mAdapter);
    

    所以现在只需将您需要的类别添加到 arraylist categories_to_display 然后清除数组,如果您需要设置新类别来检查或者如果它是单个类别,只需使用此行而不是其下方的行,然后注释下面的行它并取消注释这个// if (category.equalsIgnoreCase("carbs")) {//you could use this for only one category

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多