这是代码:
public void onRefresh() {
MyDDPState.getInstance().getItems(null, new DDPListener() {
@Override
public void onResult(Map<String, Object> json) {
Log.d(TAG, "refreshed");
if (json.get("result") == null) {
/*
* Result is null action
*/
Log.d(TAG, "Null");
swipeLayout.setRefreshing(false);
return;
}
List<Map<String, Object>> temp = (ArrayList) json.get("result");
Log.d(TAG, temp.toString());
MyDDPState.getInstance().initItems(temp);
Log.d(TAG, "converted" + MyDDPState.getInstance().getItems().toString());
Log.d(TAG, swipeLayout.toString());
Log.d(TAG, "Finished refreshing");
swipeLayout.setRefreshing(false);
Log.d(TAG, "Refresh closed");
}
});
}
swipeLayout 是指持有 SwipeRefreshLayout 的类中的私有变量。在回调中,我尝试调用 setrefreshing(false) 来摆脱进度指示器,但是这个调用会挂起异步函数。除了“刷新关闭”日志之外,所有其他日志都可以工作。
出于某种原因,我认为由于我正在使用的库,也没有记录 DDP 侦听器中的错误,所以我无法跟踪它。在 DDP 调用之外调用时,swipeLayout.setRefreshing 工作正常。