-1

您好我正在使用RecyclerView与GridLayoutManager加载图像,但它的scrollToPositionWithOffset()方法不起作用。Recyclerview GridLayoutManager scrollToPositionWithOffset not working

我已经在onSavedInstanceState()中保存了recyclerview第一个可见的项目位置,并且我在onViewStateRestored()中检索了它的值,并且每次都获取正确的位置,但RecyclerView不滚动到所需的位置。我通过旋转屏幕但它没有滚动到所需的位置。

这里是我的代码:

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putInt("position", ((GridLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition()); 
} 

@Override 
public void onViewStateRestored(@Nullable Bundle savedInstanceState) { 
    super.onViewStateRestored(savedInstanceState); 
    if (savedInstanceState != null) { 
     int state = savedInstanceState.getInt("position"); 
     ((GridLayoutManager) recyclerView.getLayoutManager()).scrollToPositionWithOffset(state, 20); 
    } 
} 
+0

只需使用recyclerviewObject.scrollToPosition(状态); –

+0

谢谢!但不工作:( –

+0

发生了什么? –

回答

0

使用smoothScrollToPosition()而不是scrollToPositionWithOffset()

试试这个:

@Override 
public void onViewStateRestored(@Nullable Bundle savedInstanceState) { 
    super.onViewStateRestored(savedInstanceState); 
    if (savedInstanceState != null) { 
     int state = savedInstanceState.getInt("position"); 
     recyclerView.smoothScrollToPosition(state); 
    } 
}