java - 从 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);
解决方案
编辑
创建一种方法来验证您的 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);
推荐阅读
- javascript - 角函数“modalinstance.modal”不是函数
- javascript - 谷歌脚本显示/隐藏行非常慢(并且崩溃)
- http - 错误:reflect.flag.mustBeAssignable 在我尝试使用 BindQuery 方法时使用不可寻址的值
- r - 需要一个 R 函数来从 for 循环中获取数据帧
- angular - 带有拖放功能的自定义问卷
- java - JavaFX 中的 UI 和后台线程。冒泡排序可视化
- node.js - 无法在heroku上托管discord bot(js)
- java - 在Java中读取包含字母数字数据的excel单元格
- c# - 无法接收 API 响应
- eclipse - Git 分支未在 Eclipse 中显示