2016-04-04 3 views
0

Здесь мой код для выбора значений в массиве-списке Named Test мне нужно получить значение в ArrayList на основе нажатия кнопки Event Но он показывает данную ошибку нижея не могу получить элементы в ArrayList

bn.setOnClickListener(new View.OnClickListener() { 


     @Override 
     public void onClick(View v) { 
      d4 = ex.getText().toString(); 
      int i=test.size(); 
      for(int j=0;j<=i;j++) { 
       String s= test.get(j).toString(); 
       Toast.makeText(getApplicationContext(),s + " ", Toast.LENGTH_SHORT).show(); 
      } 

     } 
    }); 

Сообщение об ошибке приведена ниже

04-04 16:38:29.551 28723-28723/com.example.web03.bulkmessenger E/MotionRecognitionManager: mSContextService = null 
04-04 16:38:29.551 28723-28723/com.example.web03.bulkmessenger E/MotionRecognitionManager: motionService = [email protected]3e5f9413 
04-04 16:38:32.051 28723-28723/com.example.web03.bulkmessenger E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.example.web03.bulkmessenger, PID: 28723 
java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2 
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) 
at java.util.ArrayList.get(ArrayList.java:308) 
at com.example.web03.bulkmessenger.MessengerActivity$3.onClick(MessengerActivity.java:127) 
at android.view.View.performClick(View.java:5246) 
at android.widget.TextView.performClick(TextView.java:10573) 
at android.view.View$PerformClick.run(View.java:21256) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:145) 
at android.app.ActivityThread.main(ActivityThread.java:6912) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 

спасибо за помощь заранее

+0

сделал вы получите значение здесь 'test.size()' –

+0

@IntelliJAmiya: да – Shellz

+0

насчет 'для (Int J = 0, J <я; j ++) {' –

ответ

0

IndexOutOfBoundsException, потому что вы назвали размер массива +1 ..so удалить J = < я в течение цикла.

int i=test.size();   // array size (i.e 10) 

    for(int j=0;j<i;j++) { //j<=i is wrong because it execute 11th time.so remove = 

      String s= test.get(j).toString(); //test.get(11) 
      Toast.makeText(getApplicationContext(),s + " ", Toast.LENGTH_SHORT).show(); 
     } 
0

Вы получаете ошибку IndexOutOfBoundsException потому, что вы установите переменную J в цикл для «J < = я» попробуйте установить его в этом

bn.setOnClickListener(new View.OnClickListener() { 


    @Override 
    public void onClick(View v) { 
     d4 = ex.getText().toString(); 
     int i=test.size(); 
     for(int j=0;j<i;j++) { 
      String s= test.get(j).toString(); 
      Toast.makeText(getApplicationContext(),s + " ", Toast.LENGTH_SHORT).show(); 
     } 

    } 
}); 
0

Просто измените для петля к

for(int j=0;j<test.size();j++) 

Поскольку индексы начинается от , но size() метод возвращает нас длина списка. Так что, если вы запустите цикл до j <= test.size() вы превышать индекс вашего списка

0

java.lang.IndexOutOfBoundsException: Invalid индекс 2, размер 2

IndexOutOfBoundsException Брошенный, когда попытки программы для доступа к значению в индексируемой коллекции с использованием значения, которое находится за пределами диапазона действительных индексов.

Проблема

for(int j=0;j<=i;j++) { // == Usually any negative integer less than or equal to -1 and positive integer greater than or equal to the size of the object is an index which would be out of bounds. 

Solutions

for(int j=0;j<i;j++) { 
0

массив выходит за пределы во время последней итерации вашего для цикла, так как ваше значение i является test.size(); Если вы только хотел показать тост, используя значение итеративно, просто используйте цикл for-each.

Смежные вопросы