Android Listview滚动到特定位置

时间:2013-01-15 20:51:53

标签: android

我已经覆盖了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(),但随后它逐个滚动到最后 我正在使用Android 2.2

谢谢

2 个答案:

答案 0 :(得分:0)

未测试!

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

答案 1 :(得分:0)

您可以使用下方滚动到上次访问地点。

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

或者如果您知道自己的position of item,则可以直接致电

listView.smootchScrollToPosition(position);