Ich denke, man kann 'einfrieren' Ihr Projekt vor der Schöpfung eine Instanz von JsonHttpResponseHandler
und nach Gebrauch innerhalb onSuccess Block:
final <project type> project = projects.get(i);
kurz vor post().
Wenn nicht, können Sie eine Karte erstellen, die Eins-zu-Eins-Beziehungen zwischen Projekten und Anfragen enthält.
Update: Bitte nicht, dass ich diesen Code nicht testen kann, da ich Ihre Projektstruktur nicht kenne.
// 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);
}
Ich interessiere mich mehr für die Map-Lösung. Wie kann ich es tun? Wie sollte ich einen separaten JsonHttpResponseHandler erstellen und einem Projekt zuordnen? – Nagas
Ich aktualisierte meine Antwort. –
Danke @Anton, ich habe meine eigene Art geschrieben, um die Handler zu behandeln, aber die Idee ist meist von Ihrer Antwort. – Nagas