首页 > 解决方案 > 从 PHP URL 处理 RecyclerView 中的空异常

问题描述

我正在尝试从 PHP URL 处理 RecyclerView 中的这个空异常。如果发生空异常,我希望它显示一条 Toast 消息:No Result Found.

空异常:

空异常

代码

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

        try {
            JSONObject jsonObject = new JSONObject(response);
            JSONArray array = jsonObject.getJSONArray(uarray);
            for (int i = 0; i < array.length(); i++) {
                JSONObject p = array.getJSONObject(i);
                Category_Movie item = new Category_Movie(
                    p.getInt("id"), 
                    p.getString("mTitle"), 
                    p.getString("mDesc"), 
                    p.getInt("mYear"), 
                );
                listItems.add(item);
            }
            mAdapter = new CategoryListAll_Adapter(listItems, getActivity());
            recyclerView.setAdapter(mAdapter);

        } catch(JSONException e) {
            e.printStackTrace();
        }
    }
},

new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Toast.makeText(getActivity(), error.getMessage(), Toast.LENGTH_LONG).show();
    }
});

RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
requestQueue.add(stringRequest);

标签: javaphpandroidandroid-recyclerview

解决方案


编辑

创建一种方法来验证您的 JSONObject

public boolean isJSONValid(String jsonStr) {
    try {
        new JSONObject(jsonStr);
    } catch (JSONException ex) {
        return false;
    }
    return true;
}

尝试编辑以下代码:

StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            if (isJSONValid(response)) {
                try {
                    JSONObject jsonObject = new JSONObject(response);
                    JSONArray array = jsonObject.getJSONArray(uarray);
                    for (int i = 0; i < array.length(); i++) {
                        JSONObject p = array.getJSONObject(i);
                        Category_Movie item = new Category_Movie(
                                p.getInt("id"),
                                p.getString("mTitle"),
                                p.getString("mDesc"),
                                p.getInt("mYear"),
                                );
                        listItems.add(item);
                    }
                    mAdapter = new CategoryListAll_Adapter(listItems, getActivity());
                    recyclerView.setAdapter(mAdapter);

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            } else {
                // your Toast Message
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(getActivity(), error.getMessage(), Toast.LENGTH_LONG).show();
        }
    });

    RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
    requestQueue.add(stringRequest);

推荐阅读