我正在使用snaphelper回收視圖。 這是我recyclerview:Android - 在位置發生變化時從聽衆回收當前位置
final LinearLayoutManager lm = new LinearLayoutManager(getContext(),
LinearLayoutManager.HORIZONTAL, false);
recyclerview.setLayoutManager(lm);
final PagerSnapHelper snapHelper = new PagerSnapHelper();
snapHelper.attachToRecyclerView(recyclerview);
當用戶滾動到另一個單元格,我需要做的新的單元位置的東西。
這是我做的就是位置:
recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
if (newState != RecyclerView.SCROLL_STATE_IDLE) {
return;
}
if recyclerview == null) {
return;
}
//recyclerview.clearOnChildAttachStateChangeListeners();
int firstVisible = ((LinearLayoutManager) viewerRv.getLayoutManager()).findFirstCompletelyVisibleItemPosition();
if (firstVisible == RecyclerView.NO_POSITION) {
return;
}
doSomething(firstVisible);
}
問題是firstVisible VAR而不是總是給我,例如合適的位置時,我從位置0滾動到9這可能是輸出: 0,1,2,3,4,4,5,9
還有另一種方法來獲得正確的當前位置?
這是什麼最佳實踐?
你是怎麼得到'myCellWidth'的? :) –
'myRV.getChildAt(0).measuredWidth' –
最安全的方法是使用addOnGlobalLayoutListener,因爲它可以在視圖真正呈現時給您回調,並且您可以測量視圖並獲得真實值。 希望它幫助你:) – Yoni