响应下拉手势
当你做出一个下拉手势的时候,系统显示 进度条指示器,并且调用你的回调方法,数据更新操作就在这个回调方法里
具体来说,就是要实现 SwipeRefreshLayout.OnRefreshListener
并且实现它的 onRefresh()
方法
你应该将你的更新方法 放在一个独立的方法中,然后在 onRefresh()
中调用这个方法。
示例:
mySwipeRefreshLayout.setOnRefreshListener(
new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
Log.i(LOG_TAG, "onRefresh called from SwipeRefreshLayout");
// This method performs the actual data-refresh operation.
// 重要:在这个方法结束的时候要将指示器设为 false
myUpdateOperation();
}
}
);
响应一个更新的action
如果 用户使用一个 action bar 来请求更新,那么系统会调用 onOptionItemSelected()
方法,(这里就是为什么要将更新的方法独立写的原因,可以在这里复用)
重写 onOptionItemSelected()
方法,在重写的方法中, 进度条指示器 的状态可以用 setRefreshing()
方法确定,当你更新完了之后,要记得将 当前指示器的状态设为 false
代码如下:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// 判断是否点击的是更新按钮
case R.id.menu_refresh:
Log.i(LOG_TAG, "Refresh menu item selected");
// 将指示器设为 显示
mySwipeRefreshLayout.setRefreshing(true);
// Start the refresh background task.
// This method calls setRefreshing(false) when it's finished.
myUpdateOperation();
return true;
}
// User didn't trigger a refresh, let the superclass handle this action
return super.onOptionsItemSelected(item);
}