RecyclerView跳轉到指定位置的兩種方式
阿新 • • 發佈:2019-02-03
轉載解決問題
自從android5.0推出RecyclerView以後,RecyclerView越來越受廣大程式設計師的熱愛了!大家都知道RecyclerView的出現目的是為了替代listview和ScrollView在列表方面的使用!那麼listview和ScrollView的所有功能和方法都應該有的!
但是RecyclerView的很多方法,不是封裝在RecyclerView中的,當我們在RecyclerView中找不到對應的方法時,就應該想到他的管理類manager了!
大多方法都封裝在此啊!
方法二、根據當前RecyclerView的條目數量,這個相對複雜一些,但是可以有效地避免指標越界呦../** * RecyclerView 移動到當前位置, * * @param manager 設定RecyclerView對應的manager * @param n 要跳轉的位置 */ public static void MoveToPosition(LinearLayoutManager manager, int n) { manager.scrollToPositionWithOffset(n, 0); manager.setStackFromEnd(true); }
/** * RecyclerView 移動到當前位置, * * @param manager 設定RecyclerView對應的manager * @param mRecyclerView 當前的RecyclerView * @param n 要跳轉的位置 */ public static void MoveToPosition(LinearLayoutManager manager, RecyclerView mRecyclerView, int n) { int firstItem = manager.findFirstVisibleItemPosition(); int lastItem = manager.findLastVisibleItemPosition(); if (n <= firstItem) { mRecyclerView.scrollToPosition(n); } else if (n <= lastItem) { int top = mRecyclerView.getChildAt(n - firstItem).getTop(); mRecyclerView.scrollBy(0, top); } else { mRecyclerView.scrollToPosition(n); } }