2016-12-10 167 views
0

基本上我希望我的recyclerview自動滾動到物品不顯示一半的位置。就像googleplay中的一樣。Recycler查看滾動停止

我已經寫了代碼

public void scrollToVisible(){ 
    int firstVisibleItemPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition(); 
    View view = recyclerView.getLayoutManager().getChildAt(0); 
    if (firstVisibleItemPosition > 0 && view != null) { 
     int offsetTop = view.getTop(); 
     if (firstVisibleItemPosition - 1 >= 0 && adapter.getItemCount() > 0) { 
      ((LinearLayoutManager) recyclerView.getLayoutManager()).scrollToPositionWithOffset(firstVisibleItemPosition - 1, offsetTop); 
     } 
    } 
} 

問題就來了下一個。我不知道該把代碼放在哪裏。我有一個模糊的想法,把它放在回滾視圖停止滾動時,但我一直在尋找相當一段時間,我找不到這樣的方法。當我把它放在onScroll一些意想不到的行爲出來

回答

1

您可以創建擴展RecyclerView

public class CustomRecyclerView extends RecyclerView { 
@Override 
public void onScrollStateChanged(int state) { 
    super.onScrollStateChanged(state); 

    // check if scrolling has stopped 
    if (state == SCROLL_STATE_IDLE) { 
     LinearLayoutManager linearLayoutManager = (LinearLayoutManager) getLayoutManager(); 
     // use code here 
    } 
} 
+0

一個CustomRecyclerView這說明了,當我使用customrecyclerview android.view.InflateException:二進制XML文件行#8:錯誤膨脹類gaming.kg.passingvehiclecounter.CustomRecyclerView –

+0

請參考此完整的示例:http://stackoverflow.com/a/26445064/5425930 –

+0

好吧,我終於使它的工作謝謝。現在唯一的問題是平滑滾動,但這是一個不同的問題,如此糟糕的標記你的答案是正確的 –