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);

    }
});

猜你喜欢

转载自blog.csdn.net/qq_34475640/article/details/76084910