大家好,我有以下代码:
在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。不太确定如何做到这一点。
答案 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);
}
});