package com.streamlet.appui.base;
import android.support.v4.widget.SwipeRefreshLayout;
import android.view.View;
import android.widget.BaseAdapter;
import android.widget.ListView;
import com.streamlet.common.widget.PagedLoader;
/**
* Description: 基础刷新页面.<br/><br/>
* Author: Create by Yu.Yao on 2016/9/13$.<br/><br/>
*/
public abstract class BaseRefreshFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener,
PagedLoader.OnLoadListener {
private PagedLoader mPagedLoader;
private SwipeRefreshLayout mSwipeRefreshLayout;
private boolean isLoading;
@Override
public abstract void initUI();
@Override
public abstract void initData();
@Override
public abstract String setTag();
@Override
public void onRefresh() {
onPullDownRefresh();
}
@Override
public void onLoading(PagedLoader pagedLoader, boolean isAutoLoad) {
onPullUpRefresh();
}
public boolean isLoading() {
return isLoading;
}
public void setLoading(boolean loading) {
isLoading = loading;
}
/**
* Description: 必须实现, 为mSwipeRefreshLayout设置基本配置<br/><br/>
* Author: Create by Yu.Yao in 2015/12/16.<br/><br/>
*/
public void initRefresh(ListView listView, BaseAdapter listAdapter) {
setSwipeRefreshListener();
mPagedLoader = PagedLoader.from(listView).setOnLoadListener(this).builder();
mPagedLoader.setAdapter(listAdapter);
}
/**
* @description 为initSwipeRefreshLayout设置监听器
* @author Create by Yu.Yao in 2015/12/16.
*/
public void setSwipeRefreshListener() {
if (getSwipeRefreshLayout() != null)
getSwipeRefreshLayout().setOnRefreshListener(this);
}
/**
* Description: 下拉刷新动画,不会回调onRefreshing()方法.<br/><br/>
* Author: Create by Yu.Yao on 2016/5/3.<br/><br/>
*/
public void pullDownRefreshing(final boolean isRefresh) {
if (isLoading() && isRefresh) {
return;
}
setLoading(isRefresh);
if (getSwipeRefreshLayout() != null) {
getSwipeRefreshLayout().setVisibility(View.VISIBLE);
getSwipeRefreshLayout().post(new Runnable() {
@Override
public void run() {
if (getSwipeRefreshLayout() != null) {
getSwipeRefreshLayout().setRefreshing(true);
}
}
});
}
}
/**
* Description: 操作完成时调用.<br/><br/>
* Author: Create by Yu.Yao on 2016/5/3.<br/><br/>
*/
protected void complete() {
if (getSwipeRefreshLayout() != null) {
setLoading(false);
getSwipeRefreshLayout().post(new Runnable() {
@Override
public void run() {
if (getSwipeRefreshLayout() != null) {
getSwipeRefreshLayout().setRefreshing(false);
}
}
});
}
}
/**
* Description: 返回布局中的SwipeRefreshLayout控件.<br/><br/>
* Author: Create by Yu.Yao on 2016/4/28.<br/><br/>
*/
public abstract SwipeRefreshLayout getSwipeRefreshLayout();
/**
* Description: 下拉刷新回调.<br/><br/>
* Author: Create by Yu.Yao on 2016/4/28.<br/><br/>
*/
abstract public void onPullDownRefresh();
/**
* Description: 上拉刷新回调.<br/><br/>
* Author: Create by Yu.Yao on 2016/4/28.<br/><br/>
*/
abstract public void onPullUpRefresh();
}