私はあなたが作成前にJsonHttpResponseHandler
のインスタンスを投射すると「凍結」することができます推測するonSuccessブロック内で使用して後:
final <project type> project = projects.get(i);
ちょうどポストの前に()。
もしそうでなければ、プロジェクトとリクエストの間に1対1の対応を保つことができるマップを作成することができます。
更新: プロジェクトの構造を知らないので、このコードをテストすることはできません。
// 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);
}
私はマップソリューションについてもっと興味があります。どうしたらいいですか?同様に、別のJsonHttpResponseHandlerを作成してプロジェクトにマップする必要がありますか? – Nagas
答えを更新しました。 –
ありがとうございます@Anton、私はハンドラを処理するための自分の方法を書いたが、アイデアは主にあなたの答えです。 – Nagas