Список элементов представления с одинаковым конфликтом идентификаторов в Android - PullRequest
0 голосов
/ 26 марта 2019

Я строю вертикальный список элементов без прокрутки в Android.Максимум 4 элемента, поэтому я не вижу смысла использовать ListView, особенно потому, что мне не нужна прокрутка.

Единственный элемент:

- ConstraintLayout
  --TextView (R.id.title)
  --ProgressBar (R.id.progress)

Мой фрагмент имеетбазовый элемент LinearLayout и список элементов данных, которые я преобразую в представления, показанные выше.

Псевдо:

listOfData.map(Element -> {
   InflateView
   Bind Element Data
}).foreach(rootView::addView)

Я также сохраняю окончательный rootView (с представлениями элементов), поэтому при следующем возобновлении фрагмента не требуется повторное создание представления.

Все отлично работает.Представление содержит мои элементы с их индивидуальными значениями (TextView text и ProgressBar progress).Круто!

Проблема: Когда я переключаю вкладку и возвращаюсь к фрагменту, весь мой прогресс ProgressBar устанавливается на значение прогресса последнего элемента.

Я выполнил некоторую отладку, и она не перечитывает значения из моего источника данных.Он просто повторно использует локально сохраненный элемент rootView.Я ожидаю, что оно будет в том же состоянии, которое я оставил перед тем, как покинуть фрагмент.

После дополнительной отладки значения ProgressBars меняются между OnCreateView и OnActivityCreated.(В конце OnCreateView представление все еще содержит правильные значения)

Теперь самое интересное, что только ProgressBar значения испорчены - значения TextView верны (как и раньшеоставляя Fragment)!

Теоретически я могу повторно связать все данные на каждом OnResume, чтобы отобразить актуальные значения.Но в этом нет необходимости, поскольку с момента начальной загрузки значения не должны меняться.

Кто-нибудь испытывал это и в чем причина?

(Возможно, это связано с тем, что у каждого отдельного элемента одинаковые идентификаторы для TextView и ProgressBar. Но все работало нормально при создании фрагмента. И это не то, что делает ListView? И если да, то почему влияет только ProgressBar, а не TextView?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...