#android #listview #progress-bar
#Android #listview #индикатор выполнения
Вопрос:
хотите создать listview с 2 компонентами в каждой строке, 1-й progressbar и 2-й кнопкой, которые отображают текущее значение progressbar.
для этого я использую пользовательский просмотр списка, проблема в том, что когда я прокручиваю listview, progressbar не может поддерживать его предыдущее состояние.
Пожалуйста, помогите мне решить эту проблему.
Заранее спасибо.
Комментарии:
1. покажите некоторый код, чтобы другие пользователи могли помочь разобраться, что происходит.
2. Поскольку ListView повторно использует представления для повышения эффективности, поэтому состояние progressbar не будет поддерживаться. Вы должны использовать реализацию некоторой логики внутри метода getView пользовательского адаптера, если вы опубликуете свой пользовательский код адаптера, я могу помочь..
Ответ №1:
вы можете сделать это, используя следующую логику.
1 создайте один arraylist, например.
`public ArrayList<integer> progValue = new ArrayList<integer>();`
2 теперь в конструкторе пользовательского класса адаптера списка инициализируйте progvalue со значением «0» следующим образом
for(int i = 0; i < yourLIst.size(); i ) { progValue.add(i,0); }
3 теперь в прослушивателе изменения индикатора выполнения измените значение объекта progValue в соответствии с вашим значением индикатора выполнения, например
progValue.add(i,p_value)
4 наконец, установите это значение в вашем методе getView. Нравится
progObject.setProgress(progValue.get(pos));
Вот и все.
измените код в соответствии с вашим требованием, которое я привел только для примера.
Комментарии:
1. Спасибо… Но как получить progObject в моем потоке, который существует в адаптере? Поток изменяет значение прогресса…
2. если вы спросите четко, я уточню, что вы спрашиваете? и зачем вам нужен поток?
3. Нет, у меня есть пользовательский индикатор выполнения… это показывает прогресс воспроизведения мультимедиа