0

画面外のリスト項目のビューを取得する際に問題が発生しています。

まず、スムーズにスクロールします

//locationsList is a listview
locationsList.post(new Runnable() {
    @Override
    public void run() {
        locationsList.smoothScrollToPosition(k);
    }
});

それならやりたい

View listItem = locationsList.getChildAt(k);
listItem.setBackgroundColor(getResources().getColor(R.color.highlight));

スクロールが完了した後にこれを呼び出すにはどうすればよいですか?

4

2 に答える 2

0

リスト項目ビューに固有のタグを設定します。スクロールを変更したいときはいつでも、このタグでこのリスト項目にアクセスしてください。

于 2013-10-11T16:14:40.427 に答える
0

スクロールがいつ完了したかだけを知りたい場合は、リストビューに を追加する必要がありonScrollListenerます。

locationsList.setOnScrollListener(new OnScrollListener() {

            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                if(scrollState==OnScrollListener.SCROLL_STATE_IDLE){
                    View listItem = locationsList.getChildAt(k);
                    listItem.setBackgroundColor(getResources().getColor(R.color.highlight));
                }

            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            }
        });

もちろん、上記には、スクロールが以前に開始された場合にのみ背景を更新するロジックが必要なので、おそらくブール値フラグを使用してlocationsList.smoothScrollToPosition(k);実行時に true に設定する必要があります。このフラグが true の場合は、scrollListener でコードを実行します。フラグをfalseに戻します

于 2013-10-11T16:15:25.253 に答える