禁用 SwipeRefreshLayout 拉刷新的正确方法是什么

jkj*_*uio 2 android swiperefreshlayout

我有一个使用 SwipeRefreshLayout 的 ListView。有用。但我并不总是希望拉动刷新动画或回调触发。

在我的例子中,pull to refresh 操作将视图与服务器同步,但可以选择禁用服务器同步作为首选项。当同步被禁用时,我根本不想拉到引用。

我目前正在做的是子类化 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

其中`shouldShowRefresh'的实现考虑了它是否可以结合我的网络同步设置实际上滚动。

这种做法是有效的,但我问这个问题是因为这听起来像是一个常见的要求,并且将“canChildScrollUp”混为一谈是相当混乱的。

谢谢。

Vas*_*las 6

如果我对了,您希望考虑同步状态来启用和禁用SwipeRefreshLayout。你可以做这样的事情

if(sync){
  swipeRefreshLayout.setEnabled(true);
else
  swipeRefreshLayout.setEnabled(false);
Run Code Online (Sandbox Code Playgroud)

其中同步是布尔值,表示是否启用同步。