Android ListView прокрутка в положение
private void setListviewSelection(final ListView list, final int pos) {
list.post(new Runnable() {
@Override
public void run() {
list.setSelection(pos);
for (int i = 0; i < list.getChildCount(); i++) {
View v = list.getChildAt(i);
if (i == pos && v != null)
v.setBackgroundColor(Color.argb(200, 51, 181, 229));
else if (v != null)
v.setBackgroundColor(Color.BLACK);
}
}
});
}
Вот код, который я использую для имитации выделения в моем музыкальном проигрывателе. Идея состоит в том, что когда пользователь нажимает кнопку "Далее" или "Предыдущий", элемент выделяется в ListView
, но это не работает так, как я хочу, потому что setSelection
не прокручивается плавно, и в основном некоторые элементы выделены неправильно. Для лучшего объяснения, что я на самом деле пытаюсь реализовать, это приложение Winamp, которое имеет такой способ прокрутки, когда вы нажимаете кнопку "следующий / предыдущий" (при просмотре списка воспроизведения).
С помощью setSelectionFromTop()
, smoothScrollToPosition()
тоже не сработал
2 ответа
http://bestsiteinthemultiverse.com/2009/12/android-selected-state-listview-example/
Вот решение, которое работает отлично.
Вы можете только обновить Views
из основного потока. Переместите свой код в основной поток.