RecyclerView 获取显示item的位置

rvview.setOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override  public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
        RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
        //判断是当前layoutManager是否为LinearLayoutManager
        // 只有LinearLayoutManager才有查找第一个和最后一个可见view位置的方法
        if (layoutManager instanceof LinearLayoutManager) {
            LinearLayoutManager linearManager = (LinearLayoutManager) layoutManager;
            //获取最后一个可见view的位置
            int lastItemPosition = linearManager.findLastVisibleItemPosition();
            //获取第一个可见view的位置
            int firstItemPosition = linearManager.findFirstVisibleItemPosition();

            if (lastItemPosition > 10) {
                tvCount.setVisibility(View.VISIBLE);
                tvCount.setText(lastItemPosition + "\n\n" + list.size());
                shouCount = true;
            } else {
                shouCount = false;
                tvCount.setVisibility(View.GONE);

            }
            switch (newState) {
                case RecyclerView.SCROLL_STATE_IDLE:
                    if (shouCount) {
                        tvCount.setText("一\n" + "↑\n顶部");
                    }
                    break;
            }
            LogUtils.LogE("setOnScrollListener", lastItemPosition + " " + firstItemPosition);
        }
    }

    @Override  public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);

    }
});
    原文作者:烽火戏佳人
    原文地址: https://blog.csdn.net/qq_34475640/article/details/76084910
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞