android 下拉刷新监听,说说在 Android 的 RecyclerView 中如何实现下拉刷新

1 SwipeRefreshLayout

修改布局文件,新增 SwipeRefreshLayout :<?xml  version="1.0" encoding="utf-8"?>

xmlns:material="http://schemas.android.com/apk/res-auto"

android:id="@+id/drawer"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_width="match_parent"

android:layout_height="match_parent">

...        

android:id="@+id/swipe_refresh_layout"

android:layout_width="match_parent"

android:layout_height="match_parent"

material:layout_behavior="@string/appbar_scrolling_view_behavior">

android:id="@+id/recycler_view"

android:layout_width="match_parent"

android:layout_height="match_parent"/>

...    

...

这里我们把 RecyclerView  放在 SwipeRefreshLayout 中。

2 处理刷新

修改活动类:public class MainActivity extends AppCompatActivity {    private SwipeRefreshLayout srl;     @Override

protected void onCreate(Bundle savedInstanceState) {

...    //处理刷新逻辑

srl = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);//获取 SwipeRefreshLayout 实例

srl.setColorSchemeResources(R.color.colorPrimary);//设置刷新进度条颜色

srl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {//设置刷新监听器

@Override

public void onRefresh() {

refresh();

}

}

);

}

/**

* 刷新

*/

private void refresh() {        new Thread(new Runnable() {            @Override

public void run() {                try {

Thread.sleep(1000);//为了体现出刷新效果,所以这里休眠了线程

} catch (InterruptedException e) {

e.printStackTrace();

}                //切回主线程

runOnUiThread(new Runnable() {                    @Override

public void run() {

initCats();//重新生成数据

adapter.notifyDataSetChanged();//通知数据已发生变化

srl.setRefreshing(false);//当刷新事件结束时,隐藏刷新进度条

}

});

}

}).start();

}

...

}

在 onCreate 方法中:获取 SwipeRefreshLayout 实例。

设置刷新进度条颜色。

设置刷新监听器。在监听器中调用 refresh() 方法。

在 refresh 方法中:为了体现出刷新效果,所以在此休眠了线程。一般情况下,这里会与服务器进行交互,获取数据。

利用 runOnUiThread() 切回主线程。

在主线程中,重新生成数据,接着通知数据已发生变化,最后隐藏刷新进度条。

运行程序,向下拖动主界面,就会出现下拉刷新进度条,松手就会自动刷新图片:

AAffA0nNPuCLAAAAAElFTkSuQmCC

是不是很酷呀O(∩_∩)O~

作者:deniro

链接:https://www.jianshu.com/p/dd4f0b4bfaca

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值