Несколько блесен, использующих один список с разными значениями - PullRequest
0 голосов
/ 22 марта 2019

У меня есть следующий код, который добавляет счетчики, основанные на цикле (мой цикл отличается в моей реальной версии, но упрощен здесь, поскольку результат тот же).

for(int i = 0; i < 2; i++{
Spinner spinner = new Spinner(this);
spinner.setId(result.getInt(0));

Cursor result2 = databaseHelper.retrieveData(DatabaseHelper.LISTTABLE,"`Select list`",result.getString(8),null);
listDynamic.clear();
listDynamic.add("");
for(int j = 0; j < result2.getCount(); j++){
result2.moveToNext();
listDynamic.add(result2.getString(7));
}

ArrayAdapter arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, listDynamic);
spinner.setAdapter(arrayAdapter);
result2.close();


listSpinners.add(spinner);
rlParent.addView(spinner);
}

Так что работает: вращатели работают как положено.

Код дает такой результат: счетчики будут использовать только последнюю итерацию listDynamic и arrayAdapter. В основном это приводит к следующему:

Spinner 1

  1. Q
  2. W
  3. E

Spinner 2

  1. Q * * тысяча двадцать-один
  2. W
  3. E

Результат, который должен произойти (по моему мнению), состоит в том, что в каждом счетчике должно быть два разных списка. Похоже на это:

Spinner 1

  1. A
  2. B
  3. C

Spinner 2

  1. Q
  2. W
  3. E

Я подозреваю, что в ArrayAdapters есть что-то, чего мне не хватает?

1 Ответ

0 голосов
/ 22 марта 2019

Вы используете один и тот же список для обоих счетчиков, поэтому элементы одинаковы.

РЕШЕНИЯ 1: объявить список динамически локально. listDynamic.clear (); -> List listDynamic = new Arraylist ();

Решение 2: использовать разные объекты списка для разных счетчиков listDynamic1, listDynamic2 ...

Надеюсь, это поможет

...