Chris Banes ActionBar-PullToRefresh

时间:2014-02-21 09:59:02

标签: android android-listview android-fragments pull-to-refresh

我正在使用Chris Banes ActionBar-PullToRefresh。 我可以通过拉下布局来开始刷新 - 一切都很好。

但是我如何以编程方式强制启动刷新动画(进度动画)?或者我如何以编程方式强制启动完全刷新,就像我拉下布局一样?

尝试:

mPullToRefreshLayout.startLayoutAnimation();
mPullToRefreshLayout.setRefreshing(true);
mPullToRefreshLayout.setActivated(true);

没有任何效果。

我唯一需要做的就是检查isRefreshing并停止它:

if(mPullToRefreshLayout.isRefreshing()){
   mPullToRefreshLayout.setRefreshComplete();
}

请帮忙。

3 个答案:

答案 0 :(得分:3)

通常mPullToRefreshLayout.setRefreshing(true);正在运作(如果getWindow().getWindowToken != null)。如果那不起作用,你可以看到我的前叉https://github.com/quxey/ActionBar-PullToRefresh

已编辑。试试这个

final ViewGroup decorView = (ViewGroup)getActivity().getWindow().getDecorView();
                    if(decorView.getWindowToken() == null){
                    decorView.post(new Runnable() {
                                @Override
                                public void run() {
                                    if (decorView.getWindowToken() != null) {
                                        mPullToRefreshLayout.setRefreshing(true);
                                    } else {
                                        decorView.post(this);
                                    }
                                }
                            });
                    }else{
                    mPullToRefreshLayout.setRefreshing(true);
                    }

答案 1 :(得分:0)

我简要地浏览了一下库代码,找出了听众的问题。

    if (fromTouch) {
        if (mOnRefreshListener != null) {
            mOnRefreshListener.onRefreshStarted(view);
        }
    }

方法startRefresh(View view, boolean fromTouch)的这部分代码。 Param fromTouch指出谁是刷新发起人。如果你在没有任何触摸的情况下开始你的pulltorefresh,则设置了来自触摸屏的false,因此不会触发mOnRefreshListener.onRefreshStarted(view);。我得出结论,该方法仅在拉动触摸时调用。您可以自己检查一下,也许您的问题是一样的。

答案 2 :(得分:0)

@AdamS简化here。一个班轮myRefreshableView.setRefreshing();我把它放在我的片段onResume()中。除了因为我以编程方式执行此操作之外,我很乐意刷新而没有拉动刷新反弹

相关问题