超简单!原生SwipeRefreshLayout实现首页下拉刷新

简介

SwipeRefreshLayout是Google官方推出的一款下拉刷新组件,位于v4兼容包下

android.support.v4.widget.SwipeRefreshLayout

这里简单介绍一下它的超简单的用法,因为我比较懒,所以直接上代码了!

布局

布局构造介绍

大概讲一下这个布局构造,直接从项目里贴过来的,主页用DragLayout布局的,由一个主页和一个侧边栏组成

xml







    
    
    


    
    

    







实现逻辑

  • 首先实现监听方法,并且设置监听
    implements SwipeRefreshLayout.OnRefreshListener

    /**
     * Pull To ReFresh
     */
    @BindView(R.id.main_refresh)
    SwipeRefreshLayout mainRefresh;

    private boolean isRefresh = false;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        EventBus.getDefault().register(this);
        //set refresh listener
        mainRefresh.setOnRefreshListener(this);

        isLogin();
    }
  • 然后进行写你自己的业务逻辑

  • 重写onRefresh()方法:

    /**
     * Main Pull To Refresh
     */
    @Override
    public void onRefresh() {
        //判断刷新状态
        if (!isRefresh) {
            isRefresh = true;
            //send request
            getInfo(username, token, ip);
            
        }
    }
  • 在请求完成之后,发送一条请求到主线程:
//send msg to main 
EventBus.getDefault().post("complete");
  • 主线程处理

    这里用的EventBus,可以当Handler用,主线程收到信息之后对状态进度条状态做处理,OK,完成了!

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void MainHandler(String msg) {
        if(msg.equals("complete")){
            //完成请求后隐藏刷新进度条
            mainRefresh.setRefreshing(false);
            isRefresh = false;
        }
    }

后记

以上列出的只是SwipeRefreshLayout的一般用法,如果需要自定义的话就相对复杂一点了,可以参考Android官方说明:https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html,真的特别详细!

你可能感兴趣的:(超简单!原生SwipeRefreshLayout实现首页下拉刷新)