我有一个使用SwipeRefreshLayout的ListView,它可以正常工作。但是我并不总是想要下拉刷新动画或者回调触发。
在我的情况下,下拉刷新操作会将视图与服务器同步,但是服务器同步可以作为首选项选择性地禁用。当同步被禁用时,我根本不希望进行下拉刷新。
我目前正在做的是子类化SwipeRefreshLayout并覆盖`canChildScrollUp'以“欺骗”它,即实际上它无法滚动,但我不想要动画。
因此:
private class ListFragmentSwipeRefreshLayout extends SwipeRefreshLayout
{
public ListFragmentSwipeRefreshLayout(Context context) { super(context); }
@Override
public boolean canChildScrollUp()
{
final ListView view = getListView();
if (view.getVisibility() == View.VISIBLE)
return !shouldShowRefresh(view);
return false;
}
}
实现`shouldShowRefresh'的过程考虑到它是否能够滚动以及我的网络同步设置。
这种做法是有效的,但我提出这个问题是因为它看起来是一个常见的要求,而混淆`canChildScrollUp'会让代码变得凌乱。
谢谢。