java.lang.IndexOutOfBoundsException:索引1无效,大小为0错误

时间:2017-05-18 05:39:13

标签: android indexoutofboundsexception

任何人都可以帮助我吗?我调试应用程序很多时间,但我无法找到我的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);
}

List exception error

3 个答案:

答案 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插入时它会中断。