您好,我试图做这样的事情。知道如何知道哪个请求对应哪个项目?
for (int i=0; i<projects.size(); i++) {
post("api/Project/getProductionTime", rp, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response)
{
projects.get(i).setAmount(<things from response>)
}
}
}
答案 0 :(得分:1)
我想你可以在创建JsonHttpResponseHandler
的实例之前“冻结”你的项目,并在onSuccess块中使用它之后:
final <project type> project = projects.get(i);
在post()之前。
如果没有,您可以创建一个可以在项目和请求之间保持一对一的地图。
<强>更新强> 请注意,我无法测试此代码,因为我不知道您的项目结构。
// I assume that both Project and MyJsonHttpResponseHandler has hashCode() and equals() methods
// MyJsonHttpResponseHandler is a subcalss of JsonHttpResponseHandler with hashCode() and equals() methods
private final ConcurrentHashMap<MyJsonHttpResponseHandler, Project> map = new ConcurrentHashMap<>();
...
for (int i=0; i<projects.size(); i++) {
MyJsonHttpResponseHandler handler = new MyJsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response)
{
Project project = map.get(this);
project.setAmount(<things from response>);
map.remove(this);
}
};
map.put(handler, projects.get(i));
post("api/Project/getProductionTime", rp, handler);
}