Android Listview滚动到特定位置

Android Listview滚动到特定位置,android,Android,我已覆盖listview滚动行为,如下所示: myListView.setOnScrollListener(new OnScrollListener() { @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

我已覆盖listview滚动行为,如下所示:

myListView.setOnScrollListener(new OnScrollListener() {

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {

                 if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {


                    }

            }

        });
有谁能告诉我,当滚动完成时,滚动到最近的项目位置的最佳方式是什么。(例如,客户正在向下或向上滚动)。例如,我尝试使用mylist.SmoothScrollToPosition(),但它会一个接一个地滚动到最后 我使用的是安卓2.2

谢谢你未经测试


当滚动状态从fling/touch切换到idle时,您可以在AbsListView中检测到第一个可见项。然后只需在列表视图中调用
smoothScrollToPosition

您可以使用下面的命令滚动到上次访问的位置

List<Item> myListData = ...;
for(Item item : myListData){
    if(isNextItem(Item){
        listView.smoothScrollToPosition(myListData.indexOf(item));
        break;
    }
}

问题是这样做,因为smoothScroll fire onScrollStateChanged无法避免连锁反应:)setSelection()正在避免这种情况,但仍然不确定它为什么有效。很高兴听到!我不确定为什么平滑版本会触发你看到的,我必须进行实验。
listView.smootchScrollToPosition(position);