2016-09-15 60 views
4
int findFirstVisibleItemPosition(); 
int findFirstCompletelyVisibleItemPosition(); 
int findLastVisibleItemPosition(); 
int findLastCompletelyVisibleItemPosition(); 

所有此方法都給出哪些項目可見,但如何查找Recycleview中可見項目的百分比?如何在回收視圖中查找每個可見項目的百分比

即findFirstVisibleItemPosition();是給第一個可見項目的位置,但我想執行某些操作時,首先是可見的超過50個

回答

3

你需要寫addOnScrollListener()recyclerview,並且寫入內部下面的代碼,你會得到的firstVisibleItem位置,然後你可以在每個滾動條上獲取該項目的尺寸。只需在全局變量中保存以前的維度,並將其與當前維度進行比較並計算每次滾動更改的百分比。當你得到你想要的百分比,然後執行你的操作。

int position = linearLayoutManager.findFirstVisibleItemPosition(); 
Rect rect = new Rect(); 
linearLayoutManager.findViewByPosition(position).getGlobalVisibleRect(rect); 
0

覆蓋recyclerview的ScrollChangedListener並添加以下代碼onScollerdChanged,讓你行的知名度。

  if (rvPercentage != null){ 
       LinearLayoutManager layoutManager = ((LinearLayoutManager) rvPercentage.getLayoutManager()); 

       final int firstPosition = layoutManager.findFirstVisibleItemPosition(); 
       final int lastPosition = layoutManager.findLastVisibleItemPosition(); 

       Rect rvRect = new Rect(); 
       rvPercentage.getGlobalVisibleRect(rvRect); 

       for (int i = firstPosition; i <= lastPosition; i++) { 
        Rect rowRect = new Rect(); 
        layoutManager.findViewByPosition(i).getGlobalVisibleRect(rowRect); 

        int percentFirst; 
        if (rowRect.bottom >= rvRect.bottom){ 
         int visibleHeightFirst =rvRect.bottom - rowRect.top; 
         percentFirst = (visibleHeightFirst * 100)/layoutManager.findViewByPosition(i).getHeight(); 
        }else { 
         int visibleHeightFirst = rowRect.bottom - rvRect.top; 
         percentFirst = (visibleHeightFirst * 100)/layoutManager.findViewByPosition(i).getHeight(); 
        } 

        if (percentFirst>100) 
         percentFirst = 100; 

        mData.get(i).setPercentage(percentFirst+""); 
        mAdapter.notifyItemChanged(i); 
       } 
      } 

它給你以下的輸出:

enter image description here

相關問題