SwipeToLoadLayout
是一款很棒的支持下拉刷新,上拉加载的框架,Api
调用友好,容易上手。
github 地址 : https://github.com/Aspsine/SwipeToLoadLayout
在使用过程中我们发现,SwipeToLoadLayout
的onRefresh()
回调是没有参数的,
那么在这样一个场景中,在一个fragment
中有一个viewpager
,ViewPager
有含有若干个SwipeToLoadLayout
(此时在fragment类中)
这时候每个LoanLayout
如果都注册监听时传入this
的话,那么他们都会执行同一个onRefresh()
方法,如果我们有不同的请求接口,这时就不好判断到底是那个界面需要哪个接口的数据了!
怎么办呢?这时候我们可以将SwipeToLoadLayout
进行一下包装,在onRefresh()
方法执行时调用一下我们自己注册的监听器,然后将SwipeToLoadLayout
作为参数传递出去,那么在fragment
使用SwipeToLoadLayout
的时候,注册我们包装后的接口 ,就可以在回调中轻松的判断,请求刷新/加载
的是哪一个SwipeToLoadLayout
了
伪代码如下:
public class ListLayout extends FrameLayout implementsOnRefreshListener {
public ListLayout(Context context, AttributeSet attrs) {
super(context, attrs);
setOnRefreshListener(this);
}
/**
* 下拉刷新
*/
@Override
public void onRefresh() {
if (changeListener != null) {
changeListener.onRefresh(this);
}
}
}
@Override
protected void setListener() {
mListLayout.setChangeListener(this);
}
@Override
public void onRefresh(ListLayout listLayout) {
}