#java #android #arrays #arraylist
#java #Android #массивы #arraylist
Вопрос:
Я пытаюсь получить отдельные значения из ArrayList, но мне не повезло. Похоже, что когда я выполняю цикл, он перезаписывает целочисленную переменную i, используемую в цикле for .
public ArrayList<Integer> getTests()
{
return tests;
}
// Go through all the tests downloaded from the bluetooth module
for (Integer i :ma.mOpacityTestResult.getTests())
{
View row = inflater.inflate(R.layout.test_report_row, (ViewGroup) container, false);
TextView left = (TextView) row.findViewById(R.id.rowLeft);
TextView right = (TextView) row.findViewById(R.id.rowRight);
// This is the checkbox we want shown but to only worth with counter
CheckBox check = (CheckBox) row.findViewById(R.id.checkBox);
check.setVisibility(View.VISIBLE);
check.setChecked(true);
String testResultString = getString(R.string.TestNumber) String.valueOf(counter );
// Load getTest Results into a list
List<Object> list = new ArrayList<>();
list.add(i); // Trying to seperate each value of i download from bluetooth here but failing
}
Ответ №1:
Вам нужно исключить инициализацию из цикла
Это должно быть вне цикла
List<Object> list = new ArrayList<>();
В цикле должно быть только добавление значений в список
list.add(i);
Комментарии:
1. Если я хочу получить первый элемент списка с помощью list.get(0) , он по-прежнему возвращает последний элемент переменной i, даже если я специально выбрал индекс 0 .
Ответ №2:
Ваш код создает новый список на каждой итерации и добавляет значение. Таким образом, в конце последней итерации останется только список, созданный на последней итерации, что создает ощущение, что значение в списке перезаписывается. Чтобы исправить это, инициализация списка (List list = new ArrayList<>();) должна выполняться вне цикла for .
Комментарии:
1. Я добавил инициализацию списка вне цикла for переменная i все еще перезаписывается
2. Не могли бы вы вставить обновленный код? В идеале это должно сработать.
3. Оказывается, используя оператор switch, я каким-то образом не получал правильные значения из списка, но когда я использовал операторы if.., это работало.