我通过LinearLayoutManager.smoothScrollToPosition()
以编程方式滚动到RecyclerView的某个项目后触发了回调。用户点击一个项目,右侧项目滚动到RecyclerView的顶部。我将LinearLayoutManager子类化,使其始终捕捉到项目的顶部
这适用于触发滚动事件的情况,但是当RecyclerView已经处于正确的位置时,我没有得到onScrollStateChanged
回调,因为没有滚动发生。有没有办法让这个事件发生?喜欢事先决定RecyclerView是否需要滚动?
答案 0 :(得分:1)
希望以下代码可以提供帮助
if(LinearLayoutManager.findFirstCompletelyVisibleItem() == yourDesiredPosition) {
//do your stuff
} else {
LinearLayoutManager.scrollToPositionWithOffset(yourDesiredPosition, offset);
//onScrollStateChanged would be trigger then.
}
答案 1 :(得分:-1)
我自己找到了以下解决方案:
// get the view the user selected
View view = mLayoutManager.findViewByPosition(index);
// get top offset
int offset = view.getTop();
if (offset == 0) { // the view is at the top of the scrollview
showDetailViewInternal(event);
} else {
// scrolling
}