任何人都可以帮助我吗?我调试应用程序很多时间,但我无法找到我的Android应用程序中的确切问题。在我的Android应用程序中,我的案例如下所述。 案例1:将数据插入数据库这是完美的工作。 案例2:数据显示在回收站中查看确定。它会显示正常。
它只适用于单个用户登录。当另一个用户登录到应用程序并尝试添加数据时,它将获得此异常。或者当我在那时刷新第一个用户登录视图时,它有相同的异常。
或者当我从数据库中删除第二个用户时,我刷新第一个登录用户视图,那时它将完美地工作。现在该怎么办?请任何人帮我解决这个问题。我附上了我的错误日志的屏幕截图,请参考。
Retrive data.java
private void makeJsonArrayRequest(final String email) {
String cancel_req_tag = "list";
JsonArrayRequest req = new JsonArrayRequest(URL_FOR_SELECT,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d("OnResponse", response.toString());
try {
// Parsing json array response
// loop through each json object
for (int i = 0; i < response.length(); i++) {
JSONObject jsonObject = response.getJSONObject(i);
ListMobileModal objMobileModal = new ListMobileModal();
if (jsonObject.getString("email").equals(email)) {
objMobileModal.email = jsonObject.getString("email");
if (!jsonObject.isNull("name")) {
objMobileModal.lname = jsonObject.getString("name"); //here we can fetch webservice field
}
if (!jsonObject.isNull("title")) {
objMobileModal.title = jsonObject.getString("title"); //here we can fetch webservice field
}
if (!jsonObject.isNull("eimage")) {
objMobileModal.eimage = jsonObject.getString("eimage");
}
if (!jsonObject.isNull("eid")) {
objMobileModal.eid = jsonObject.getString("eid");
}
if (!jsonObject.isNull("ename")) {
objMobileModal.ename = jsonObject.getString("ename");
}
if (!jsonObject.isNull("edescription")) {
objMobileModal.edescription = jsonObject.getString("edescription");
}
if (!jsonObject.isNull("evlocation")) {
objMobileModal.elocation = jsonObject.getString("elocation");
}
lstListMobile.add(i, objMobileModal);
}
}
objMobileAdapter = new ListMobileAdapter(SavedPhoneBottomActivity.this, lstListMobile);
objEmptyRecyclerViewAdapter = new EmptyRecyclerViewAdapter("No selected list!");
if (lstListMobile == null || lstListMobile.size() == 0) {
rvDisplay.setAdapter(objEmptyRecyclerViewAdapter);
rvDisplay.setVisibility(View.VISIBLE);
} else {
rvDisplay.setAdapter(objMobileAdapter);
rvDisplay.setVisibility(View.VISIBLE);
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(SavedPhoneBottomActivity.this,
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("VolleyError", "Error: " + error.getMessage());
Toast.makeText(SavedPhoneBottomActivity.this,
error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
AppSingleton.getInstance(getApplicationContext()).addToRequestQueue(req, cancel_req_tag);
}
答案 0 :(得分:1)
尝试替换lstListMobile.add(i,objMobileModal);使用lstListMobile.add(objMobileModal);
当if(jsonObject.getString(&#34; email&#34;)。equals(email))条件失败时,不为该用户添加索引。
你将在lstListMobile.add(1,objMobileModal)上得到ArrayIndexOutOfBound错误;如果0索引不存在
答案 1 :(得分:0)
请检查第一个数组是否为空
if (response.length > 0) {
// do something
}
else{
//empty array
}
答案 2 :(得分:0)
您正在插入lstListMobile.add(i, objMobileModal);
也许您只需添加lstListMobile.add(objMobileModal);
?可能发生的事情是当i==0
未通过测试if (jsonObject.getString("email").equals(email)) {
时。因此它不会添加,并且大小保持为0.当i==1
插入时它会中断。