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 из основного потока. Переместите свой код в основной поток.

Другие вопросы по тегам