Android PullToRefresh下拉刷新功能

Android 里的下拉刷新功能,真的是列表交互里常用的那一项了。用户手指一拉、轻轻一放,就能触发内容更新。你要是做新闻、社交、商城类 App,这玩意儿基本跑不了。

SwipeRefreshLayout是 Google 官方出的,用起来比较省事。直接包一层你要刷新的列表,比如RecyclerViewListView,再加个监听器就搞定了。简单又稳定,适合对样式要求不高的场景。

想要效果更炫、定制更自由?那可以看看第三方的PullToRefresh库。支持更多视图类型,还能加自定义的刷新动画,比如你喜欢的那种旋转加载圈。配置稍微多点,但灵活性也上来了。

下面这段代码是用SwipeRefreshLayout实现的最基础刷新逻辑,几行搞定:

SwipeRefreshLayout swipeRefreshLayout = findViewById(R.id.swipe_refresh_layout);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
    @Override
    public void onRefresh() {
        // 刷新逻辑写这
        swipeRefreshLayout.setRefreshing(false); // 刷新完成后记得关掉加载圈
    }
});

如果你用的是PullToRefresh,代码会稍微复杂一点,不过可玩性更高:

PullToRefreshListView pullToRefreshListView = findViewById(R.id.pull_to_refresh_list_view);
pullToRefreshListView.setOnRefreshListener(new OnRefreshListener() {
    @Override
    public void onRefresh(PullToRefreshBase refreshView) {
        // 异步加载数据
        pullToRefreshListView.onRefreshComplete();
    }
});

哦对了,不管用哪个方案,都建议你把刷新逻辑放到后台线程跑,比如用AsyncTaskRetrofitRxJava都挺方便。别让主线程卡住,用户体验会差多。

还要注意的是,像ScrollViewWebView这种非列表控件,用SwipeRefreshLayout时有点小坑,得好滑动冲突,要不容易出现“拉不动”的情况。

如果你要加下拉刷新功能,推荐先从SwipeRefreshLayout入手,简单上手快;需求复杂再上PullToRefresh,灵活性更高。可以参考下面这些示例文章:

如果你最近在做内容流 App 或者需要动态加载数据的界面,下拉刷新功能确实是个加分项,值得投入一点时间搞清楚。

rar 文件大小:112.65KB