分析
封装一个Request请求基类,内容有:
- 第一次加载数据(首先从缓存里加载,如果没有再请求服务器加载数据)
- 重新加载数据(直接请求服务器加载数据)
- 回调接口(如果成功加载或到数据或失败,则通知需要此数据的类,加载完成,且把加载的数据传过去)
- 抽象出一个数据解析接口,留给不同请求类处理,如书架请求类,书城请求类,他们都有各自的Json数据
封装一个ShelfFragment(前篇ViewPager+Fragment有描述),内容如下:
- 实现请求类回调函数方法(核心部分)
代码
/**
* 请求基类
* Created by Administrator on 2016-09-05.
*/
public abstract class BaseRequest<T> {
public interface BaseInter<T>{
void handleData(T data);
}
public BaseInter dataInter;
public void setInter(BaseInter dataInter) {
this.dataInter = dataInter;
}
public abstract T parseJson(String json);
// 第一次加载
public void firstLoad(String getUrl){
String json = loadLoal(getUrl);
if (json == null){
loadServer(getUrl);
}else{
T data = parseJson(json);
if (null != dataInter){
// 回调方法,相当于打电话通知对方(能处理的人,或是实现该该函数的类)数据刷新啦。
dataInter.handleData(data);
}
}
}
//刷新加载
public void refreshLoad(String getUrl){
loadServer(getUrl);
}
private void loadServer(final String getUrl) {
//获取到json并且保存到本地
HttpUtils utils = new HttpUtils();
utils.send(HttpRequest.HttpMethod.GET, Constants.SERVER+getUrl , new RequestCallBack<String>() {
@Override
public void