SwipeRefreshLayout 以编程方式触发
2022-08-31 14:39:00
有没有办法以编程方式触发?动画应该开始,并且应该调用接口中的方法。SwipeRefreshLayout
onRefresh
OnRefreshListener
有没有办法以编程方式触发?动画应该开始,并且应该调用接口中的方法。SwipeRefreshLayout
onRefresh
OnRefreshListener
如果您使用的是 5.0 中引入的新 swipeRefreshLayout
如上图所示,您只需添加以下行即可以编程方式触发滑动刷新布局
在爪哇语中:
mSwipeRefreshLayout.post(new Runnable() {
@Override
public void run() {
mSwipeRefreshLayout.setRefreshing(true);
}
});
在 Kotlin 中:
mSwipeRefreshLayout.post { mSwipeRefreshLayout.isRefreshing = true }
如果您只是简单地在Java中调用:
mSwipeRefreshLayout.setRefreshing(true);
或在 Kotlin 中
mSwipeRefreshLayout.isRefreshing = true
它不会触发圆圈进行动画处理,因此通过添加上面的行,只需在UI线程中延迟,以便它在ui线程内显示圆圈动画。
通过调用不会被执行mSwipeRefreshLayout.setRefreshing(true)
OnRefreshListener
为了停止循环加载动画调用mSwipeRefreshLayout.setRefreshing(false)
为了触发SwipeRefreshLayout,我尝试了这个解决方案:
SwipeRefreshLayout.OnRefreshListener swipeRefreshListner = new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
Log.i(TAG, "onRefresh called from SwipeRefreshLayout");
// This method performs the actual data-refresh operation.
// The method calls setRefreshing(false) when it's finished.
loadData();
}
};
现在关键部分:
swipeLayout.post(new Runnable() {
@Override public void run() {
swipeLayout.setRefreshing(true);
// directly call onRefresh() method
swipeRefreshListner.onRefresh();
}
});