我有一个使用SwipeRefreshLayout的ListView。有用。但我并不总是希望拉动刷新动画,也不希望回调触发。
在我的情况下,pull to refresh动作将视图与服务器同步,但可以选择禁用服务器同步作为首选项。当同步被禁用时,我不希望拉到referesh发生。
我目前正在做的是将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”相当混乱。
感谢。
答案 0 :(得分:4)
如果我做对了,你想考虑同步状态启用和禁用 SwipeRefreshLayout 。你可以做这样的事情
if(sync){
swipeRefreshLayout.setEnabled(true);
else
swipeRefreshLayout.setEnabled(false);
其中sync是布尔值,表示是否启用了同步。