分页加载的Fragment
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的更多相关文章
- [转]微信小程序之加载更多(分页加载)实例 —— 微信小程序实战系列(2)
本文转自;http://blog.csdn.net/michael_ouyang/article/details/56846185 loadmore 加载更多(分页加载) 当用户打开一个页面时,假设后 ...
- Diycode开源项目 搭建可以具有下拉刷新和上拉加载的Fragment
1.效果预览 1.1.这个首页就是一个Fragment碎片,本文讲述的就是这个碎片的搭建方式. 下拉会有一个旋转的刷新圈,上拉会刷新数据. 1.2.整体结构 首先底层的是BaseFragment 然后 ...
- java攻城狮之路(Android篇)--widget_webview_metadata_popupwindow_tabhost_分页加载数据_菜单
一.widget:桌面小控件1 写一个类extends AppWidgetProvider 2 在清单文件件中注册: <receiver android:name=".ExampleA ...
- Android基本控件之listView(三)<用ListView实现分页加载>
我们之前讨论了ListView的基本使用方法和ListView的优化 今天我们再来讨论一个关于ListView的一个新的东西~就是分页加载.那么什么是分页加载呢?简单点说,就是"下拉刷新&q ...
- Android ListView分页加载时图片显示问题
场景:Android ListView需要分页加载,每个item中会有图片,图片又是从网络下载的. 问题:在滑动加载下一页时,上一页的图片明明已经下载完成了,但是无法显示出来. Bug重现: 1,加载 ...
- Android中ListView分页加载数据
public class MainActivity extends Activity { private ListView listView=null; //listview的数据填充器 privat ...
- ListView上拉刷新和分页加载完整的Dome
很多人工作的过程中都会碰到ListView下拉刷新和分页加载,然后大多数公司都已经把框架写好了,大家直接用就可以了,有些人一直对这个事情处于迷茫状态,为了让大家对上拉刷新和分页加载有一个比较全面的认识 ...
- 【Android进阶】Listview分页加载数据的实现
Listview分页加载数据的实现 public class MainActivity extends Activity { protected static final int SUCCESS_GE ...
- Jetpack 架构组件 Paging 分页加载 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
随机推荐
- [JS]省市区数据及方法调用
调用方法: function GetProvinceByid(id) { if (id == null || id == undefined || id == "") return ...
- Chapter 21_4 捕获
捕获功能在很多地方都在使用,就是从目标字符串中抽出匹配于该模式的内容,在指定捕获时,应将模式中需要捕获的部分写到一对圆括号内. 对于具有捕获的模式,函数match会将所有捕获到的值作为单独的结果返回. ...
- memcahced缓存特点
1.key-value数据结构 2.所有数据保存在内存中 3.可以分布式集群 4.处理并发的机制是libevent事件机制 5.当内容容量达到指定值后,就基于LRU(Least Recently Us ...
- Exchange 2010 实用小技巧
#Exchange安装必须开启防火墙服务 #批量建用户: for /f "tokens=1,2,3,4,5,6,7 delims=," %a in (c:\users.csv) ...
- DB2导入导出 学习笔记
db2pd -osinfodb2mtrk -i -d (for aix)db2 get dbm cfg show detaildb2 get db cfg show detaildb2 get sna ...
- linux 发送带附件的邮件
一.mutt命令 1.安装 yum -y install mutt 2.使用 echo "mail content"|mutt -s "mail title" ...
- iOS混合应用开发入门
原文出处: cocoacontrols 译文出处:魏志峰(@JeremyWei) 欢迎分享原创到伯乐头条 http://blog.jobbole.com/46554/ 介绍 上周(译者:原文成 ...
- JQUERY 轮播插件
闲来无事,写个轮播插件,项目中用到的时候就无需在写了,不然会累死宝宝的 废话少说 代码上 html部分 <div class="lunbo"> <ul> & ...
- lvs 会话保持(转发)
lvs & keepalived的tcp 长连接的问题解决办法 虽然应用keepalived搞定了后端服务负载均衡和高可用性问题,但是在具体应用的时候,还是要注意很多问题.很多应用都用tcp或 ...
- CSS-负边距原理
一.负边距原理 正边距以相邻模块的位置为参考点进行移动,并对周围模块进行合理地排挤. 负边距即margin的四个边界值为负值. 在html中使用负边距margin-left和margin-top相当于 ...