Основная причина вашей проблемы, как писал @StefanBeike, в том, что вы создаете объект только один раз перед циклом for, а затем просто продолжаете переписывать его атрибуты. Перемещение экземпляра (= вызов new
) внутри цикла for исправляет функциональность.
Однако, кроме этого, очень плохо увеличивать переменную for-loop внутри тела for-loop. Таким образом, вы затемните свое намерение и получите код, который будет менее читабельным, сложным для сопровождения и который легче будет изменить при последующих изменениях.
И главное условие должно быть i < newImageVal.length-1
для безопасной обработки размера массива. (Чтобы быть на 100% уверенным, вы не получите ArrayIndexOutOfBoundsException
.)
Есть несколько лучших способов.
Увеличение на 2 в "заголовке" цикла for:
for (int i = 0; i < newImageVal.length-1; i += 2) {
ObjectAttribute object = new ObjectAttribute();
object.setImageName(newImageVal[i]);
object.setImageId(newImageVal[i+1]);
objLst.add(object);
}
Использовать цикл while вместо цикла for:
int i = 0;
while (i < newImageVal.length-1) {
ObjectAttribute object = new ObjectAttribute();
object.setImageName(newImageVal[i++]);
object.setImageId(newImageVal[i++]);
objLst.add(object);
}