使用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(); } }
Recyclerview下拉刷新 上拉加载
猜你喜欢
转载自blog.csdn.net/weixin_40350174/article/details/82839549
今日推荐
周排行