2014-02-04 2 views
0

Я пытаюсь отобразить список из текущего года плюс пять лет в элементе Spinner. Но получаю ошибку java.lang.IndexOutOfBoundsException: Invalid index 2014, size is 0Получение ошибки Неверный индекс

Я использовал этот код,

ArrayList<String> years=new ArrayList<String>(); 

    Calendar cal=Calendar.getInstance(); 
    int curYear= cal.get(Calendar.YEAR); 

    for(int i=0;i<6;i++) 
    { 
     years.add(curYear+i, null); 
    } 
    Spinner spnYear= (Spinner) findViewById(R.id.spnYear);  
    ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, years); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spnYear.setAdapter(adapter); 

Пожалуйста, помогите.

Спасибо.

+1

Где находится стопка? Также укажите, какая строка является той, которая генерирует исключение? – nKn

ответ

2

Когда вы используете add() с двумя параметрами, первый - это индекс, который вы хотели бы добавить. Вам нужно просто позвонить years.add(String.valueOf(currYear + 1)). Я также добавил String.valueOf() вокруг пункта вы добавляете, потому что у вас есть ArrayList<String>

+0

работал спасибо :) – Android

0

здесь Ваш вопрос

for(int i=0;i<6;i++) { 
     years.add(curYear+i, null); 
} 

вы используете метод добавления, который принимает первый индекс параметра Я и как второй объект. В документации говорится, что он бросает

IndexOutOfBoundsException - if the index is out of range (index < 0 || index > size()). 

На первой итерации size() возвращает 0, а вы попробуйте поставить элемент в позиции 2014

Изменить это в

for(int i=0;i<6;i++) { 
     years.add(String.valueOf(curYear+i)); 
    } 
0

Это как ты» re добавляя вещи к вашему ArrayList. Во-первых, вы пытаетесь добавить int curYear + i в ArrayList<String>. Это не сработает. Во-вторых, вы добавляете их таким образом, что вы фактически не передаете объект в список. Версия добавления, которую вы используете, добавляет (int index, объект E) принимает индекс в качестве своего первого аргумента - не то, что вы хотите добавить в список. Ваш второй аргумент, который вы хотите добавить, имеет значение null. Это объясняет, почему вы получаете размер списка 0. Вы должны просто добавить свои значения в нормальное состояние и знать, что индексы 0, 1, 2, 3, 4 будут следующие 5 лет.

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