Получение отдельных значений из ArrayList

#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.., это работало.