0
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);
            }
        }
    });
}

这是我用来模仿音乐播放器中的选择的代码。这个想法是,当用户按下 Next 或 Previous 按钮时,一个元素会在 中突出显示ListView,但这不是我想要的方式,因为setSelection滚动不顺畅并且基本上某些元素没有正确突出显示。为了更好地解释,我实际上要实现的是一个 Winamp 应用程序,当您按下下一个/上一个按钮(查看播放列表时)时,它具有滚动方式。

使用setSelectionFromTop(),smoothScrollToPosition()也无法正常工作。

4

2 回答 2

0

您只能Views从主线程更新。将您的代码移动到主线程。

于 2012-09-09T10:09:06.070 回答
0

http://bestsiteinthemultiverse.com/2009/12/android-selected-state-listview-example/

这是完美的解决方案。

于 2012-09-15T11:39:18.397 回答