保持SwipeRefreshLayout直到任务完成运行

时间:2016-01-03 06:07:35

标签: java android

大家好,我有以下代码:

在onCreate中:

mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.activity_main_swipe_refresh_layout);
        mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {

            @Override
            public void onRefresh() {
                refreshContent();
            }
        });

另一种方法:

private void refreshContent(){
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            db = new DatabaseHelper(getApplicationContext());
            new RefreshScores().execute();
            list.clear();
            list.addAll(db.getTracked());
            db.closeDB();
            mSwipeRefreshLayout.setRefreshing(false);
            adapter.notifyDataSetChanged();
        }
    },2000);
}

目前,当我在应用程序顶部附近拉下时,刷新微调器显示并开始旋转。它会在2秒后消失。但是,我希望它在RefreshScores().execute()list.clear(); list.addAll(db.getTracked()); db.closeDB();出现之前保持可见状态。 RefreshScores是一个AsyncTask。不太确定如何做到这一点。

2 个答案:

答案 0 :(得分:1)

AsyncTask有一个名为onPostExecute的回调。当doInBackground()返回时,将在UI线程中调用此回调。见http://developer.android.com/reference/android/os/AsyncTask.html

您可以尝试使用

mSwipeRefreshLayout.setRefreshing(false);

直接在此回调中,并将其他需要新数据的调用移动到回调中。

答案 1 :(得分:-1)

编辑

 mSwipeRefreshLayout.post(new Runnable() {
                            @Override
                            public void run() {
                               mSwipeRefreshLayout.setRefreshing(false);

                            }
                        });