RecyclerView滑動到底部的時候點選按鈕直接返回頂部

和氣的部落格發表於2017-09-20
//滑動監聽,當條目滑動一定程度的時候讓返回頂部的按鈕顯示
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
        //首先得到頁面佈局
        RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
        //判斷佈局,如果是GridLayoutManager 佈局,強轉以後得到第一個可見的下標,大於5就
        //  讓返回頂部的按鈕顯示出來,點選這個按鈕返回下標為0的item
        if (layoutManager instanceof GridLayoutManager) {
            int position = ((GridLayoutManager) layoutManager).findFirstVisibleItemPosition();
            if (position > 5) {//這裡的toTop是一個Button,根據自己需求來定義就可以
                toTop.setVisibility(View.VISIBLE);
                toTop.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
			//seek_recyclerView.scrollToPosition(0);//兩個都可以
                        seek_recyclerView.smoothScrollToPosition(0);
                    }
                });
            } else {
                toTop.setVisibility(View.GONE);
            }
        } else if (layoutManager instanceof LinearLayoutManager) {
            int position = ((LinearLayoutManager) layoutManager).findFirstVisibleItemPosition();
            if (position > 10) {
                toTop.setVisibility(View.VISIBLE);
                toTop.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
			//seek_recyclerView.scrollToPosition(0);//兩個都可以
seek_recyclerView.smoothScrollToPosition(0); } }); } else { toTop.setVisibility(View.GONE); } } }});

相關文章