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

これは、音楽プレーヤーでの選択を模倣するために使用しているコードです。アイデアは、ユーザーが [次へ] または [前へ] ボタンを押すと要素が強調表示されるということですが、スムーズにスクロールせず、基本的にいくつかの要素が正しく強調表示されない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 に答える