微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – SwipeRefreshLayout和刷新状态

我正在努力使用Google支持库的SwipeRefreshLayout中的文档.

当我使用setonRefreshListener设置的回调接收刷新调用时,我做了我的操作,之后,我发现我需要再次将刷新状态设置为false – 如果我不这样做,我再也不能通过刷卡触发它!

    mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);
    if (mSwipeRefreshLayout != null) {

        mSwipeRefreshLayout.setonRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                Toast.makeText(getApplication(),"Refreshing!",Toast.LENGTH_SHORT).show();
                //requestDataRefresh();
                mSwipeRefreshLayout.setRefreshing(false);
            }
        });
    }

到现在为止还挺好.但是看看setRefreshing的文档:

/**
 * Notify the widget that refresh state has changed. Do not call this when
 * refresh is triggered by a swipe gesture.
 *
 * @param refreshing Whether or not the view should show refresh progress.
 */
public void setRefreshing(boolean refreshing) {...

但是再次将刷新状态设置为false正是刷新后我必须要做的!

文档是错误的还是我看错了?
文件不应该说:“当刷卡手势触发刷新时,不要将刷新状态调用为真”

你怎么看?

最佳答案
当您从上到下滑动Swip​​eRefreshLayout时,会自动触发setRefreshing(true).所以你不需要重复调​​用setRefreshing(true).同时,如果您调用setRefreshing(true)但不刷扫SwipeRefreshLayout,则当您滑动Swip​​eRefreshLayout时,您将看到相同的场景.无论你是调用setRefreshing(true)还是从上到下滑动Swip​​eRefreshLayout,你都需要在完成任务后调用setRefreshing(false).就像您在上面的代码段中所做的那样.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐