-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); 
    } 
}