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

将唯一标签设置为 listitem 视图。每当您想更改滚动时,使用此标签访问此列表项。

于 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 回答