使用SnapHelper的RecyclerView,scrollToPosition之后没有捕捉项目

dra*_*oon 3 android android-recyclerview

我的活动中有一个RecyclerView,并附加了LinearSnapHelper:

TimePickerAdapter timePickerAdapter = new TimePickerAdapter(hours);
recyclerView = (RecyclerView) root.findViewById(R.id.recycler_view);

final SnapHelper snapHelper = new LinearSnapHelper();
snapHelper.attachToRecyclerView(recyclerView);
Run Code Online (Sandbox Code Playgroud)

问题是,当我最初要滚动到特定项目时,不会触发捕捉帮助器来附加该项目(请参见图片):

recyclerView.getLayoutManager().scrollToPosition(timePickerAdapter.getCurrentPosition());
Run Code Online (Sandbox Code Playgroud)

当我用手滚动时,它开始按预期工作。有什么解决办法吗?

在此处输入图片说明

小智 6

SnapHelper依靠RecyclerView.OnFlingListener#onFling()RecyclerView.OnScrollListener#onScrollStateChanged(recyclerView, RecyclerView.SCROLL_STATE_IDLE)触发快速动作。

但是scrollToPosition()不会在回调上面触发。您可以smoothScrollBy(1, 0)在之后调用scrollToPosition()以触​​发SnapHelper滚动。


Kat*_*ina 0

我刚刚遇到了同样的问题 - 对我来说使用recyclerView.smoothScrollToPosition(pos)而不是recyclerView.scrollToPosition(pos)做了这个技巧