美文网首页
同一个布局中使用多个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