基类LoadintPager(加载三种状态)
通常都知道,android中一个页面的加载,无非三种状态:
- 加载中
- 加载成功
- 加载失败
当然,如果从网络获取数据,可能会出现数据为空的情况。这里也要考虑进去
具体看下截图
失败
加载成功,这里界面随意弄的textview
空
加载中
这里可以抽下共有的方法。
/**
* 描述:LoadingPager 不会在xml中使用,所以只实现context参数的构造
* 作者:Marc on 2016/7/7 09:27
* 邮箱:aliali_ha@yeah.net
*/
public abstract class LoadingPager extends FrameLayout {
/**
* //页面显示分析
* //Fragment共性-->页面共性-->视图的展示
* /**
* 任何应用其实就只有4种页面类型
* ① 加载页面
* ② 错误页面
* ③ 空页面
* ④ 成功页面
* <p/>
* ①②③三种页面一个应用基本是固定的
* 每一个fragment/activity对应的页面④就不一样
* 进入应用的时候显示①,②③④需要加载数据之后才知道显示哪个
*/
public static final int STATE_NONE = -1;// 默认状态
public static final int STATE_LODING = 0;//正在请求网络
public static final int STATE_EMPTY = 1;//空状态
public static final int STATE_ERROR = 2;//错误状态
public static final int STATE_SUCCESS = 3;// 成功状态
public int mCurState = STATE_NONE;//当前默认状态
private View mLoadingView;//加载中视图
private View mErrorView;//加载错误视图
private View mEmptyView;//空视图
private View mSuccessView;//加载成功视图
public LoadingPager(Context context) {
super(context);
initCommonView();
}
/**
* 初始化常规视图
*
* @call LoadingPager初始化的时候
* @des 这初始化的时候不创建successview是因为根据不同的情况,成功界面不一样
*/
private void initCommonView() {
// ① 加载页面
mLoadingView = View.inflate(UIUtils.getContext(), R.layout.pager_loading, null);
this.addView(mLoadingView);
// ② 错误页面
mErrorView = View.inflate(UIUtils.getContext(), R.layout.pager_error, null);
mErrorView.findViewById(R.id.error_btn_retry).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//点击按钮重新请求加载数据
loadData();
}
});
this.addView(mErrorView);
// ③ 空页面
mEmptyView = View.inflate(