【问题标题】:Do something after volley request is processed凌空请求处理后做一些事情
【发布时间】:2019-12-18 05:20:55
【问题描述】:

我正在使用 Volley 解析嵌套的 JSON 对象,我从 stackoverflow 本身得到了答案。

Parsing Nested JSON Objects using Volley

但我认为代码可以在没有 if else 的情况下进行优化,而且如果 volley 请求为空或未收到数据,我必须显示文本“No Data”。我尝试使用adapter.isEmptyadapter.getCount() 进行检查

这些都不起作用。

这是我的代码

datalist=false;
      progressBar.setVisibility(View.VISIBLE);

        StringRequest stringRequest = new StringRequest(Request.Method.GET, JSON_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {

                        schemeslist=false;
                        progressBar.setVisibility(View.INVISIBLE);



                        try {

                            JSONObject obj = new JSONObject(response);
                            JSONObject one = obj.getJSONObject("getProjectDetailsResult");
                            JSONObject two = one.getJSONObject("NewDataSet");

                            if(two.get("Rec") instanceof JSONArray) {
                                datalist=true;
                                JSONArray heroArray = two.getJSONArray("Rec");

                                for (int i = 0; i < heroArray.length(); i++) {

                                    JSONObject heroObject = heroArray.getJSONObject(i);

                                    APIModel hero = new APIModel(heroObject.getString("decProjectID"),
                                            heroObject.getString("intProjectSlNo"),
                                            heroObject.getString("chvProjectName"),
                                            heroObject.getString("chvProjectNameEng"),
                                            heroObject.getString("chrProjCatCode"),
                                            heroObject.getString("chvEngProjCategory"),
                                            heroObject.getString("nchvSecType"),
                                            heroObject.getString("chvEngSecType"),
                                            heroObject.getString("chvImplOfficerDesg"),
                                            heroObject.getString("chvImplOfficerDesgEng"),
                                            heroObject.getString("singleYrAmt"),
                                            heroObject.getString("TotExp"),
                                            heroObject.getString("percentage"));

                                    heroList.add(hero);

                                }
                            } else {
                                datalist=true;
                                JSONObject heroObject = two.getJSONObject("Rec");
                                APIModel hero = new APIModel(heroObject.getString("decProjectID"),
                                        heroObject.getString("intProjectSlNo"),
                                        heroObject.getString("chvProjectName"),
                                        heroObject.getString("chvProjectNameEng"),
                                        heroObject.getString("chrProjCatCode"),
                                        heroObject.getString("chvEngProjCategory"),
                                        heroObject.getString("nchvSecType"),
                                        heroObject.getString("chvEngSecType"),
                                        heroObject.getString("chvImplOfficerDesg"),
                                        heroObject.getString("chvImplOfficerDesgEng"),
                                        heroObject.getString("singleYrAmt"),
                                        heroObject.getString("TotExp"),
                                        heroObject.getString("percentage"));

                                heroList.add(hero);

                            }


                            ListViewAdapter adapter = new ListViewAdapter(heroList, getApplicationContext());

//adding the adapter to listview

                            listView.setAdapter(adapter);
                           // Toast.makeText(getApplicationContext(), " " + listView.getAdapter().getCount(),Toast.LENGTH_SHORT).show();
                            if(!datalist){
            txtNoData.setVisibility(View.VISIBLE);
        }

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
//displaying the error in toast if occurrs
                        Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });

//creating a request queue
        RequestQueue requestQueue = Volley.newRequestQueue(this);

//adding the string request to request queue
        requestQueue.add(stringRequest);

谁能告诉我应该把 if 条件放在哪里工作? 我检查了一个 toast 以获取项目计数,但如果没有数据,它显示为空白而不是 0。所以我无法检查

【问题讨论】:

  • 谁能帮忙?

标签: android parsing android-listview android-volley android-adapter


【解决方案1】:

你可以检查size()data list(heroList)size()zero意味着你有no data

试试这个

if(heroList.size() == 0){
     txtNoData.setVisibility(View.VISIBLE);
}

【讨论】:

  • 没用。实际上,当没有接收到数据时,这些函数中的任何一个都没有数据。
猜你喜欢
  • 1970-01-01
  • 2019-12-31
  • 2021-06-25
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 2021-08-29
  • 1970-01-01
相关资源
最近更新 更多