1


我正在寻找一种在以编程方式滚动(通过使用smoothscrolltoposition)达到给定位置时触发的方法。
我有一个活动,有一个列表视图。当用户点击按钮时,列表滚动到给定位置。我需要更改该位置的项目布局属性。我正在使用滚动侦听器,并覆盖 onScroll 方法来执行此操作,但该方法并未按照文档所述在最后执行。
顺便说一句:我正在使用 API 8。

这是我的代码:

public void scrollToPosition(View view) {
    this.myList.setOnScrollListener(new OnScrollListener() {
        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            // Here I need to be positioned in the right place, to change the row layout.
            MyActivity.this.myList.setOnScrollListener(null);
        }
    });
    this.myList.smoothScrollToPosition(this.position - 1);
}

TIA,
米尔顿。

4

1 回答 1

0

“smoothScrollToPosition”的问题它滚动屏幕上可见的给定位置,而不是滚动到屏幕顶部。您需要确定是向下滚动到您的位置还是向上滚动到您的位置。这是第一点,第二点为什么要在滚动侦听器开始滚动时删除它?当列表视图刚刚开始滚动时调用“onScroll”。您需要检查 onScrollStateChanged,它有 3 个状态,touchScroll -> 用户正在触摸列表视图并滚动,flingScroll -> listview 正在滚动但用户没有触摸它,并且 scrollIdle -> 用户没有触摸任何东西并且滚动视图仍然

您的问题并未准确说明您需要做什么,请编辑它,我会帮助您

于 2014-05-03T14:23:40.973 回答