0

所以我有这个ListView我想向下滚动并刷新。我正在使用SwipeRefreshLayout它,它工作得很好,除了我无法安排方法Handler中的onRefresh()等待时间。所以这是我的onRefresh()

@Override
public void onRefresh() {
    final String net = getString(R.string.alertin);
    final String netErr = getString(R.string.alert_intext);
    ConnectivityManager conn = (ConnectivityManager) 
            getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo ntwrkInf = conn.getActiveNetworkInfo();
    if (ntwrkInf != null && ntwrkInf .isConnected()) {
        ListReq refList = new ListReq();
        refList.execute();
    } else {
        AlertDialogDisp(Main.this, net, netErr);
    }       
    new Handler().postDelayed(new Runnable() {
        @Override public void run() {
            mSwipeRefreshLayout.setRefreshing(false);
        }
    }, 5000); // so it's here, I just put 5000 randomly.
}

正如您所期望的那样,5000 不是我Asynctask完成工作的合适数量。我该如何安排这个并在 Asynctask 结束时完成“刷新动画”?提前致谢

4

2 回答 2

0

在您的AsyncTask中覆盖方法onPostExecute()。当您的 AsyncTask 完成他的任务时调​​用此方法。

它会是这样的:

public class Task extends AsyncTask<Void, Void,Void> {

protected void doInBackground(Void ...) {
    //Your process
}

@Override
protected void onPostExecute(Void...) {
    //Call your onRefresh()
}
于 2014-08-26T06:55:14.893 回答
0

在 AsynkTask 中是 postExecute() 方法,当你 AsynkTask 完成它的工作时它会被调用。因此,只需在正确的时间拨打异步电话通知即可。没有任意设置为 5000

于 2014-08-26T06:46:05.407 回答