美文网首页
同一个布局中使用多个SwipeToLoadLayout,如何在同

同一个布局中使用多个SwipeToLoadLayout,如何在同

作者: pdog18 | 来源:发表于2017-04-22 21:00 被阅读244次

SwipeToLoadLayout 是一款很棒的支持下拉刷新,上拉加载的框架,Api调用友好,容易上手。

github 地址 : https://github.com/Aspsine/SwipeToLoadLayout

在使用过程中我们发现,SwipeToLoadLayoutonRefresh() 回调是没有参数的,
那么在这样一个场景中,在一个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) {

    }


相关文章

网友评论

      本文标题:同一个布局中使用多个SwipeToLoadLayout,如何在同

      本文链接:https://www.haomeiwen.com/subject/mqtezttx.html