Recyclerview下拉刷新 上拉加载

使用Recyclerview第三方框架BRVAH


public class Home_Meassage_System_fragment extends Fragment {

    private View view;
    private RecyclerView homeMeassageSystemFragmentRecyclerview;
    private SwipeRefreshLayout swipeRefreshLayout;
    private List<Home_Meassage_System_RecyclerBean.DataBean.TemplateBean> templateBeans = new ArrayList<>();
    private Home_Meassage_System_RecyclerAdapter adapter;

    //请求头
    private String authorization;
    //所有条数
    int Alltotal = 0;

    //应用于上拉时每次加10
    int total = 10;

    //数据分页 当前页数
    int pageNum = 1;
    private String pagenumber;

    //空布局
    private View Emptyview;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.home_meassage_system_fragment, container, false);
        return view;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        @SuppressLint("WrongConstant") SharedPreferences sharedPreferences = getActivity().getSharedPreferences("UserInfor", Context.MODE_APPEND);
        authorization = sharedPreferences.getString("token", "");
        pagenumber = String.valueOf(pageNum);
        initview();
        initFirstdata(pagenumber);

    }

    private void initview() {
        //提前初始化,为空布局做准备
        homeMeassageSystemFragmentRecyclerview = view.findViewById(R.id.home_meassage_system_fragment_recyclerview);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
        homeMeassageSystemFragmentRecyclerview.setLayoutManager(linearLayoutManager);
        adapter = new Home_Meassage_System_RecyclerAdapter(R.layout.home_meassage_system_fragment_recyclerview_item, templateBeans);
        homeMeassageSystemFragmentRecyclerview.setAdapter(adapter);


        swipeRefreshLayout = view.findViewById(R.id.home_message_system_fragment);


        //下拉刷新
        swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                onRefreshlistener();
            }
        });
    }


    /**
     * 第一次加载数据
     *
     * @param pagenum
     */
    private void initFirstdata(String pagenum) {
        RetrofitForUsersystemUtils
                .getInstance()
                .getApiServier(MeassageService.class)
                .thequerypush(authorization, pagenum, "10")
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<Home_Meassage_System_RecyclerBean>() {
                               @Override
                               public void onSubscribe(Disposable d) {

                               }

                               @Override
                               public void onNext(Home_Meassage_System_RecyclerBean home_meassage_system_recyclerBean) {
                                   //无数据
                                   if (home_meassage_system_recyclerBean.getData().getTemplate().toString().equals("[]")) {
                                       Emptyview = getLayoutInflater().inflate(R.layout.custom_empty_view,
                                               (ViewGroup) homeMeassageSystemFragmentRecyclerview.getParent(), false);
                                       adapter.setEmptyView(Emptyview);
                                       Emptyview.setOnClickListener(new View.OnClickListener() {
                                           @Override
                                           public void onClick(View view) {
                                               adapter.setEmptyView(R.layout.loading_view, (ViewGroup) homeMeassageSystemFragmentRecyclerview.getParent());
                                               new Handler().postDelayed(new Runnable() {
                                                   @Override
                                                   public void run() {
                                                       initFirstdata(pagenumber);
                                                   }
                                               }, 1000);
                                           }
                                       });
                                   } else {
                                       for (int i = 0; i < home_meassage_system_recyclerBean.getData().getTemplate().size(); i++) {
                                           templateBeans.add(home_meassage_system_recyclerBean.getData().getTemplate().get(i));
                                       }
                                       //获取总条数
                                       Alltotal = home_meassage_system_recyclerBean.getData().getPageInfo().getTotal();
                                       setRecyclerview();
                                   }


                               }

                               @Override
                               public void onError(Throwable e) {
                                   //无网络
                                   if (DeviceUtils.isNetWorkConnected(getContext())) {
                                       Logger.e("网络连接正常");
                                   } else {
                                       Emptyview = getLayoutInflater().inflate(R.layout.custom_no_network_view,
                                               (ViewGroup) homeMeassageSystemFragmentRecyclerview.getParent(), false);
                                       adapter.setEmptyView(Emptyview);
                                       Emptyview.setOnClickListener(new View.OnClickListener() {
                                           @Override
                                           public void onClick(View view) {
                                               adapter.setEmptyView(R.layout.loading_view, (ViewGroup) homeMeassageSystemFragmentRecyclerview.getParent());
                                               new Handler().postDelayed(new Runnable() {
                                                   @Override
                                                   public void run() {
                                                       initFirstdata(pagenumber);
                                                   }
                                               }, 1000);
                                           }
                                       });
                                   }

                               }

                               @Override
                               public void onComplete() {

                               }
                           }
                );

    }

    /**
     * 绑定数据
     */
    private void setRecyclerview() {
        adapter = new Home_Meassage_System_RecyclerAdapter(R.layout.home_meassage_system_fragment_recyclerview_item, templateBeans);
        homeMeassageSystemFragmentRecyclerview.setAdapter(adapter);
        adapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
            @Override
            public void onLoadMoreRequested() {
                homeMeassageSystemFragmentRecyclerview.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        /**
                         *  Alltotal是总条数,每次上拉加载10条数据
                         *  每次上拉total可以+10
                         *  Alltotal>total
                         *  可以继续上拉加载
                         *  <=表示数据已经加载完毕
                         */

                        if (Alltotal > total) {
                            adapter.loadMoreComplete();
                            setOnLoadMoreData();

                        } else {
                            adapter.loadMoreEnd();
                        }
                    }
                }, 1000);
            }
        });

    }

    /**
     * 数据分页
     * 下拉加载
     */
    private void setOnLoadMoreData() {
        total = total + 10;
        pageNum++;
        String pagenum = String.valueOf(pageNum);
        RetrofitForUsersystemUtils
                .getInstance()
                .getApiServier(MeassageService.class)
                .thequerypush(authorization, pagenum, "10")
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<Home_Meassage_System_RecyclerBean>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(Home_Meassage_System_RecyclerBean home_meassage_system_recyclerBean) {
                        for (int i = 0; i < home_meassage_system_recyclerBean.getData().getTemplate().size(); i++) {
                            templateBeans.add(home_meassage_system_recyclerBean.getData().getTemplate().get(i));
                        }
                        adapter.setNewData(templateBeans);

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }


    /**
     * 有新数据
     * 下拉刷新
     */
    private void onRefreshlistener() {
        RetrofitForUsersystemUtils
                .getInstance()
                .getApiServier(MeassageService.class)
                .thequerypush(authorization, "1", "10")
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<Home_Meassage_System_RecyclerBean>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(Home_Meassage_System_RecyclerBean home_meassage_system_recyclerBean) {

                        //获取当前最新条数,如果条数>第一次获取的条数,可以进行下拉刷新
                        int swtotal = home_meassage_system_recyclerBean.getData().getPageInfo().getTotal();
                        if (swtotal > Alltotal) {
                            for (int i = 0; i < swtotal - Alltotal; i++) {
                                templateBeans.add(0, home_meassage_system_recyclerBean.getData().getTemplate().get(i));
                            }
                            adapter.setNewData(templateBeans);
                            swipeRefreshLayout.setRefreshing(false);
                            //重新获取一下,不然会一直添加想adapter中添加相同数据
                            Alltotal = home_meassage_system_recyclerBean.getData().getPageInfo().getTotal();
                        } else {
                            swipeRefreshLayout.setRefreshing(false);
                        }


                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });

    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_40350174/article/details/82839549