2016-09-15 87 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

相关问题