Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Indexoutofbounds异常无效索引0,大小为0_Android_Arrays_Android Listview_Arraylist_Geojson - Fatal编程技术网

Android Indexoutofbounds异常无效索引0,大小为0

Android Indexoutofbounds异常无效索引0,大小为0,android,arrays,android-listview,arraylist,geojson,Android,Arrays,Android Listview,Arraylist,Geojson,我是android开发的新手。我在有效的索引0中得到这个错误indexoutofbounds异常,大小为0 03-21 02:19:44.530:E/AndroidRuntime2693:致命异常:主 03-21 02:19:44.530:E/AndroidRuntime2693:java.lang.IndexOutOfBoundsException:索引0无效,大小为0 03-21 02:19:44.530:E/AndroidRuntime2693:at java.util.ArrayList

我是android开发的新手。我在有效的索引0中得到这个错误indexoutofbounds异常,大小为0

03-21 02:19:44.530:E/AndroidRuntime2693:致命异常:主 03-21 02:19:44.530:E/AndroidRuntime2693:java.lang.IndexOutOfBoundsException:索引0无效,大小为0 03-21 02:19:44.530:E/AndroidRuntime2693:at java.util.ArrayList.ThrowindexOutfBoundsExceptionArrayList.java:255 03-21 02:19:44.530:E/AndroidRuntime2693:at java.util.ArrayList.getArrayList.java:308 03-21 02:19:44.530:E/AndroidRuntime2693:at com.example.listcheck.ListActivity.GetSearchResults2ListActivity.java:284 03-21 02:19:44.530:E/AndroidRuntime2693:at com.example.listcheck.ListActivity.access$0ListActivity.java:267 03-21 02:19:44.530:E/AndroidRuntime2693:at com.example.listcheck.ListActivity$LoadData.onPostExecuteListActivity.java:260 03-21 02:19:44.530:E/AndroidRuntime2693:at com.example.listcheck.ListActivity$LoadData.onPostExecuteListActivity.java:1 03-21 02:19:44.530:E/AndroidRuntime2693:at-android.os.AsyncTask.finishAsyncTask.java:631 03-21 02:19:44.530:E/AndroidRuntime2693:at android.os.AsyncTask.access$600AsyncTask.java:177 03-21 02:19:44.530:E/AndroidRuntime2693:at android.os.AsyncTask$InternalHandler.handleMessageAsyncTask.java:644 03-21 02:19:44.530:E/AndroidRuntime2693:at android.os.Handler.dispatchMessageHandler.java:99 03-21 02:19:44.530:E/AndroidRuntime2693:at-android.os.Looper.loopLooper.java:137 03-21 02:19:44.530:E/AndroidRuntime2693:at-android.app.ActivityThread.mainActivityThread.java:5103 03-21 02:19:44.530:E/AndroidRuntime2693:at java.lang.reflect.Method.invokenactive方法 03-21 02:19:44.530:E/AndroidRuntime2693:at java.lang.reflect.Method.invokeMethod.java:525 03-21 02:19:44.530:E/AndroidRuntime2693:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.runZygoteInit.java:737 03-21 02:19:44.530:E/AndroidRuntime2693:com.android.internal.os.ZygoteInit.mainZygoteInit.java:553 03-21 02:19:44.530:E/AndroidRuntime2693:at dalvik.system.NativeStart.main本地方法 这是我的密码:

public class ListActivity extends Activity {

ListView listService;
String url = "http://textbookmarket.in/demo/tick-tack-toe-spa/webservices/index.php?method=getAllServices";

ArrayAdapter<String> adapterService;
ProgressDialog progressDialog;

ListView serviceListData;

ArrayList<String> arrayServiceTitle, arrayServiceDes,
        arrayServicesthirtynormal, arrayservicesthirtymember,
        arrayServicessixtynormal, arrayservicessixtytymember,
        arrayservicesningtytynormal, arrayservicesningtytymember;
ArrayList<Integer> arrayServiceId;

ImageView btnBackToMediaMainActivity;
LinearLayout btnContactUs;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list);

    createObjs();

    listService = (ListView) findViewById(R.id.mlistview);

    // btnBackToMediaMainActivity = (ImageView)
    // findViewById(R.id.btnBackToMediaMainActivity);

    ConnectionDetector cd = new ConnectionDetector(getApplicationContext());
    Boolean isInternetPresent = cd.isConnectingToInternet();

    if (isInternetPresent) {
        new LoadData().execute();
    } else {

    }


 }

 public class ConnectionDetector {

    Context _context;

    public ConnectionDetector(Context context) {
        this._context = context;
    }

    public boolean isConnectingToInternet() {
        ConnectivityManager connectivity = (ConnectivityManager) getApplicationContext()
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity != null) {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null)
                for (int i = 0; i < info.length; i++)
                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }

        }
        return false;
    }
  }

   private void createObjs() {

    arrayServiceId = new ArrayList<Integer>();
    arrayServiceTitle = new ArrayList<String>();
    // arrayServiceImage = new ArrayList<String>();

    arrayServiceDes = new ArrayList<String>();
    arrayServicesthirtynormal = new ArrayList<String>();
    arrayservicesthirtymember = new ArrayList<String>();

    arrayServicessixtynormal = new ArrayList<String>();
    arrayservicessixtytymember = new ArrayList<String>();

    arrayservicesningtytynormal = new ArrayList<String>();

    arrayservicesningtytymember = new ArrayList<String>();

   }

   public class LoadData extends AsyncTask<String, Void, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        progressDialog = ProgressDialog.show(ListActivity.this, "",
                "Please wait", true);
        progressDialog.setCancelable(true);

    }

    @Override
    protected String doInBackground(String... params) {
        // Fetch Top Articles

        String mResponse = fetchJsonUrl(url);

        Log.v("log", " resultsEventsAll --> " + mResponse);

        try {
            JSONObject jsonObject = new JSONObject(mResponse);
            String status = jsonObject.optString("status");

            if(status != null && status.equals("1")) {
                JSONObject jsonResultObj = jsonObject.optJSONObject("result");
                if(jsonResultObj != null) {

                    JSONArray jsonServicesArray = jsonResultObj.optJSONArray("services");
                    if(jsonServicesArray != null && jsonServicesArray.length() > 0) {
                        //resultServiceArrayList = new ArrayList<ResultService>(jsonServicesArray.length());
                        for(int i = 0; i < jsonServicesArray.length(); i++) {
                            JSONObject jsonObject2 = jsonServicesArray.optJSONObject(i);
                            if(jsonObject2 != null) {
                                ListModel resultService = new ListModel ();
                                resultService.setServicesId(jsonObject2.getInt("service_id"));
                                resultService.setServicesTitle(jsonObject2.optString("name"));
                                resultService.setServicesDes(jsonObject2.optString("description"));


                                JSONObject json30 = jsonObject2.optJSONObject("30_mins");
                                if(json30 != null) {
                                    ListModel resultServiceThirty = new ListModel();
                                    resultServiceThirty.setServicesThirtynormal(json30.optString("normal"));
                                    resultServiceThirty.setServicesThirtymember(json30.optString("member"));
                                //  resultService.setResultServiceThirty(resultServiceThirty);
                                } 

                                JSONObject json60 = jsonObject2.optJSONObject("60_mins");
                                if(json30 != null) {
                                    ListModel resultServiceSixtyty = new ListModel();
                                    resultServiceSixtyty.setServicesThirtynormal(json60.optString("normal"));
                                    resultServiceSixtyty.setServicesThirtymember(json60.optString("member"));
                                //  resultService.setResultServiceThirty(resultServiceThirty);
                                } 
                                JSONObject json90 = jsonObject2.optJSONObject("90_mins");
                                if(json30 != null) {
                                    ListModel resultServiceNinty = new ListModel();
                                    resultServiceNinty.setServicesThirtynormal(json90.optString("normal"));
                                    resultServiceNinty.setServicesThirtymember(json90.optString("member"));
                                //  resultService.setResultServiceThirty(resultServiceThirty);
                                } 

                            }


                arrayServiceId.add(jsonObject2.getInt("service_id"));
                arrayServiceTitle.add(jsonObject2.getString("name"));
                arrayServiceDes.add(jsonObject2.getString("description"));

                arrayServicesthirtynormal.add(jsonObject2.getString("normal"));
                arrayservicesthirtymember.add(jsonObject2.getString("member"));

                arrayServicessixtynormal.add(jsonObject2.getString("normal"));  
                arrayservicessixtytymember.add(jsonObject2.getString("member"));

                arrayservicesningtytynormal.add(jsonObject2.getString("normal"));
                arrayservicesningtytymember.add(jsonObject2.getString("member"));
                        }
                    }
                }
                        }
        } catch (Exception e) {

        }

        return mResponse;
    }

    public String getMonth(int month) {
        return new DateFormatSymbols().getMonths()[month - 1];
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        progressDialog.dismiss();

        ArrayList<ListModel> searchResults2 = GetSearchResults2();
        listService.setAdapter(new ListAdapter(getApplicationContext(),
                searchResults2));

      }
   }

    private ArrayList<ListModel> GetSearchResults2() {
    ArrayList<ListModel> results = new ArrayList<ListModel>();

    Log.v("log", " Test Results GetSearch ");

    Log.v("log", " services Size " + arrayServiceId.size());

    for (int i = 0; i < arrayServiceId.size(); i++) {

        Log.v("log", " Test " + i);

        ListModel sr1 = new ListModel();
        sr1.setServicesId(arrayServiceId.get(i));
        sr1.setServicesTitle(arrayServiceTitle.get(i));
        // sr1.setServicesImage(arrayServiceImage.get(i));
        sr1.setServicesDes(arrayServiceDes.get(i));

        sr1.setServicesThirtynormal(arrayServicesthirtynormal.get(i));
        sr1.setServicesThirtynormal(arrayServicesthirtynormal.get(i));

        sr1.setServicesSixtynormal(arrayServicessixtynormal.get(i));
        sr1.setServicesSixtymember(arrayservicessixtytymember.get(i));

        sr1.setServicesNingtynormal(arrayservicesningtytynormal.get(i));
        sr1.setServicesNingtymember(arrayservicesningtytymember.get(i));

        results.add(sr1);
    }

    return results;
   }

     public String fetchJsonUrl(String url) {
    // TODO Auto-generated method stub
    StringBuffer sb = new StringBuffer();
    try {
        URL mUrl = new URL(url);

        URLConnection uc = mUrl.openConnection();
        BufferedReader buffer = new BufferedReader(new InputStreamReader(
                uc.getInputStream()));
        String line = "";
        while ((line = buffer.readLine()) != null) {

            sb.append(line + "\n");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return sb.toString();
    }

  }

基本上,此异常意味着其中一个列表的大小为0,serviceId的大小大于0,因此,当您尝试访问空列表的第0个元素时,它会抛出异常。

根据异常情况,以下任何一个arraylist都是空的,您正试图从空数组中检索值 在onPostExecute方法中

    sr1.setServicesTitle(arrayServiceTitle.get(i)) ; 
// sr1.setServicesImage(arrayServiceImage.get(i));
     sr1.setServicesDes(arrayServiceDes.get(i));
     sr1.setServicesThirtynormal(arrayServicesthirtynormal.get(i));
     sr1.setServicesThirtynormal(arrayServicesthirtynormal.get(i));
     sr1.setServicesSixtynormal(arrayServicessixtynormal.get(i));
     sr1.setServicesSixtymember(arrayservicessixtytymember.get(i));
     sr1.setServicesNingtynormal(arrayservicesningtytynormal.get(i));
     sr1.setServicesNingtymember(arrayservicesningtytymember.get(i)); 

是的。我通过webservice获得所有响应。我获得的大小为1。尝试使用调试器查看您尝试访问的每个列表的大小。我使用了调试器,但每次获得大小为1的响应时,只需在循环之前插入以下代码:Log.dlog,serviceTitle:+arrayServiceTitle.size+serviceDes:+arrayServiceDes.dize+thirtynormal:+SerrayServicestThirtyNormal.size+sixtynormal:+ArrayServicesExtyNormal.size+ningtynormal:+ArrayServicesIngtyNormal.size+ningtymember:+ArrayServicesIngtyMember.size;并检查每个数字是否都大于零。我得到的服务标题是:1服务项:1第三项正常:0第六项正常:0第六项成员:0第六项正常:0第六项成员:0第六项正常:0第六项成员:0第六项正常:0第六项成员:0错误日志显示com.example.listcheck.ListActivity.GetSearchResults2ListActivity.java:284。告诉我哪条线是284号线?