怎样实现SwipeRefreshLayout的自动刷新

2025-04-26 05:16:21
推荐回答(2个)
回答1:

一般的消息列表为ListView类型,将list加载到adapter中,再将adapter加载到ListView中,从而实现消息列表的展示。而下拉刷新要求给消息列表加一个头部,其中有图片(向上/向下箭头)和提示字样(下拉刷新/松开刷新),从而我们需要做的事情:
1.需要做一个head.xm来实现头部的样式定义;
2.需要自定义一个继承了ListView的MsgListView,在该类中将head加在MsgListView对象的头部;
3.将原有的消息界面布局文件中的ListView改为cn.xd.microblogging.tools.MsgListView(包名.MsgListView);
4.将原有的消息界面后台代码中创建的ListView对象改为MsgListView对象,注意消息界面Activity要继承ListActivity,并且实现其刷新监听。

回答2:

首先想要在界面一加载的时候出现更新效果,直接调用setRfreshing(true)是出不来效果的,这个问题我以前也遇到过,必须调用
SwipeRefreshLayout.post(new Runable(){
@Override
public void run() {
SwipeRefreshLayout.setRefreshing(true);
}
});

关闭的时候也使用
SwipeRefreshLayout.post(new Runable(){
@Override
public void run() {
SwipeRefreshLayout.setRefreshing(false);
}
});
但是如果你认为这样就会走onRefresh方法,那你就大错特错了,setRefreshing(true)是不会触发onRefresh的,必须要手动调用一次
所以在界面onCreate里面想要立刻加载就需要这样

SwipeRefreshLayout.post(new Runable(){
@Override
public void run() {
SwipeRefreshLayout.setRefreshing(true);
}
});
onRefresh();