package com.z.fragment;

 import android.os.Bundle;
 import android.os.Environment;
 import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.LinearLayoutManager;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Toast;

 import com.google.gson.Gson;
 import com.    .MyApp;
 import com.z.  .R;
 import com.z..adapter.AppNewAdapter;
 import com.z..bean.HomeNewData;
 import com.z..utils.ApiUrls;
 import com.z..utils.DefaultCallBack;
 import com.z..utils.HttpUtils;
 import com.z..view.AutoLoadRecylerView;

 import butterknife.BindView;
 import butterknife.ButterKnife;

 public class HomeFragment extends Fragment {
     @BindView(R.id.rv)
     AutoLoadRecylerView rv;
     @BindView(R.id.refresh_layout)
     SwipeRefreshLayout refreshLayout;
     private AppNewAdapter newAdapter;
     private int currPageIndex = 0;
     @Nullable
     @Override
     public View onCreateView(LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) {
         //1.布局xml|使用Code
         int layoutId = R.layout.fragment_home_new;
         //2.阅读接口文档
         //3.可在调试模式获取json
         currPageIndex = 0;
         HttpUtils.get(ApiUrls.HOME + "?index=" + currPageIndex, callback);
         //6.支持下拉刷新与滚动加载
         View view = inflater.inflate(layoutId, container, false);
         ButterKnife.bind(this, view);
         //编写下拉刷新事件的处理
         refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
             @Override
             public void onRefresh() {
                 //  1.清空数据
                 //  2.添加新获取的首页数据
                 //  3.列表刷新
                 Toast.makeText(getContext(), "下拉刷新中", Toast.LENGTH_SHORT).show();
                 currPageIndex = 0;
                 HttpUtils.get(ApiUrls.HOME + "?index=" + currPageIndex, callback);

             }
         });
         rv.setLoadMoreListener(new AutoLoadRecylerView.loadMoreListener() {
             //滚动到底部可以加载下一页数据
             @Override
             public void onLoadMore() {
                 if (currPageIndex == 2) {
                     Toast.makeText(getContext(), "没有更多记录", Toast.LENGTH_SHORT).show();
             } else {
                 Toast.makeText(getContext(), "加载更多中..", Toast.LENGTH_SHORT).show();
                 currPageIndex += 1;
                 HttpUtils.get(ApiUrls.HOME + "?index=" + currPageIndex, callback);
             }
             }
         });
         return view;
     }
     DefaultCallBack callback = new DefaultCallBack() {
         @Override
         public void onStart(int what) {
             super.onStart(what);
             if (currPageIndex == 0) {
                 refreshLayout.setRefreshing(true);
             }
         }
         @Override
         public void onFinish(int what) {
             super.onFinish(what);
             if (currPageIndex == 0) {
                 refreshLayout.setRefreshing(false);
             }
         }

         @Override
         protected void createView(String json) {
             //4.使用Gsonformat
             HomeNewData data = new Gson().fromJson(json, HomeNewData.class);
             System.out.println(data);
             if (currPageIndex == 0) //首页逻辑
             {
                 if (newAdapter == null) {//1.
                     //5.高级控件的显示
                     rv.setLayoutManager(new LinearLayoutManager(getContext()));
                     //设置适配器
                     newAdapter = new AppNewAdapter(data.list);
                     rv.setAdapter(newAdapter);
                 } else {
                     newAdapter.getData().clear();
                     //添加新获取的首页数据
                     newAdapter.getData().addAll(data.list);
                     newAdapter.notifyDataSetChanged();
                     Toast.makeText(getContext(), "下拉刷新成功", Toast.LENGTH_SHORT).show();
                 }
             } else {
                 //添加 下一页数据
                 newAdapter.getData().addAll(data.list);
                 newAdapter.notifyDataSetChanged();
                 Toast.makeText(getContext(), "加载更多完成", Toast.LENGTH_SHORT).show();
                 //加载完成,设置loading 为false可以加载下一页
                 rv.setLoading(false);
             }
         }
     };
 }

分页加载的Fragment的更多相关文章

  1. [转]微信小程序之加载更多(分页加载)实例 —— 微信小程序实战系列(2)

    本文转自;http://blog.csdn.net/michael_ouyang/article/details/56846185 loadmore 加载更多(分页加载) 当用户打开一个页面时,假设后 ...

  2. Diycode开源项目 搭建可以具有下拉刷新和上拉加载的Fragment

    1.效果预览 1.1.这个首页就是一个Fragment碎片,本文讲述的就是这个碎片的搭建方式. 下拉会有一个旋转的刷新圈,上拉会刷新数据. 1.2.整体结构 首先底层的是BaseFragment 然后 ...

  3. java攻城狮之路(Android篇)--widget_webview_metadata_popupwindow_tabhost_分页加载数据_菜单

    一.widget:桌面小控件1 写一个类extends AppWidgetProvider 2 在清单文件件中注册: <receiver android:name=".ExampleA ...

  4. Android基本控件之listView(三)<用ListView实现分页加载>

    我们之前讨论了ListView的基本使用方法和ListView的优化 今天我们再来讨论一个关于ListView的一个新的东西~就是分页加载.那么什么是分页加载呢?简单点说,就是"下拉刷新&q ...

  5. Android ListView分页加载时图片显示问题

    场景:Android ListView需要分页加载,每个item中会有图片,图片又是从网络下载的. 问题:在滑动加载下一页时,上一页的图片明明已经下载完成了,但是无法显示出来. Bug重现: 1,加载 ...

  6. Android中ListView分页加载数据

    public class MainActivity extends Activity { private ListView listView=null; //listview的数据填充器 privat ...

  7. ListView上拉刷新和分页加载完整的Dome

    很多人工作的过程中都会碰到ListView下拉刷新和分页加载,然后大多数公司都已经把框架写好了,大家直接用就可以了,有些人一直对这个事情处于迷茫状态,为了让大家对上拉刷新和分页加载有一个比较全面的认识 ...

  8. 【Android进阶】Listview分页加载数据的实现

    Listview分页加载数据的实现 public class MainActivity extends Activity { protected static final int SUCCESS_GE ...

  9. Jetpack 架构组件 Paging 分页加载 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

随机推荐

  1. FileOutputStream flush()

    FileOutputStream 继承 OutputStream ,flush方法查看源码方法体为空,所以flush没起到清除缓存的作用 改用BufferedOutputStream再调用flush( ...

  2. mybatis学习笔记四(动态sql)

    直接贴图,注解在代码上,其他的配置文件在学习一中就不贴了 1 数据库 2 实体类 package com.home.entity; /** * 此类是: 用户实体类 * @author hpc * @ ...

  3. asp.net MVC漏油配置总结

    URL构造 命名参数规范+匿名对象 routes.MapRoute(name: "Default",url: "{controller}/{action}/{id}&qu ...

  4. eclipse中debug快捷方式

    eclipse中如何跳转到指定行 :ctrl+L  然后输入行数 F5:跳入方法 F6:向下逐行调试 F7:跳出方法 F8:直接跳转到下一个断点 持续更新

  5. cookie会话技术

    会话技术 B/S请求是无状态无记忆的,脚本与脚本之间是没有联系的,导致不能进行连续的业务逻辑 Cookie技术:将会话数据保存在浏览器端 原理:服务器向浏览器发送指令,用来管理存储在浏览器端的cook ...

  6. 关于php数组是否要声明

    不知道大家有没有这样玩过php数组,正常情况下直接不声明,直接使用数组,会发现输出的与声明后的结果是一样的.

  7. openstack私有云布署实践【10.2 计算nova - controller节点配置(办公网环境)】

    一.首先登录controller1创建nova数据库,并赋于远程和本地访问的权限.     mysql -u root -p   CREATE DATABASE nova; GRANT ALL PRI ...

  8. Python学习笔记——基础篇1【第三周】——set集合

    set集合 不允许重复的元素出现(相当于特殊的列表) set 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 练习:寻找差异 # 数据库中原有 old_dic ...

  9. Struts2的通配符配置方式

    Struts2的Action类很有意思,你可以使用3种方式来实现具体的Action类: 让你的Action类继承自ActionSupport类(项目中最常用这种方式,因为ActionSupport类中 ...

  10. python返回null和空的不同

    mysql数据库中有的字段是NULL, 有的字段是空白 写Python脚本,fetchall()得到结果,也是不同. NULL对应的是None, 空白对应的是'' (None, '') 所以根据结果进 ...