Ich versuche, eine Klassenvariable innerhalb dieser überschriebenen Methode zu setzen. Ich verstehe, dass dies in einem anderen Thread ausgeführt wird. Wenn ich es von dort aus gebe, bekomme ich den Wert. Wenn ich es in einer der folgenden Methoden ausgab, sind die Werte null.Der Versuch, eine Klassenvariable aus der Methode 'onResponse' von Response.Listener von Android zu aktualisieren
Wie wird diese Klassenvariable richtig gesetzt?
public class MainActivity extends AppCompatActivity {
private String[] mRestTitles = new String[2];
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONObject rootObject = response.getJSONObject("_embedded");
JSONArray users = rootObject.getJSONArray("users");
for (int i = 0; i < users.length(); i++) {
JSONObject o = users.getJSONObject(i);
mRestTitles[i] = o.getString("firstName");
Log.d("item", mRestTitles[i]);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("erro", error.toString());
}
}
);
queue.add(request);
public ArrayList<Entry> generateEntryList(){
String[] entryTitles = getResources().getStringArray(R.array.entry_names);
String[] entryDescriptions = getResources().getStringArray(R.array.entry_description);
ArrayList<Entry> entries = new ArrayList<>();
for(int i = 0; i < mRestTitles.length; i++){
// mRestTitles is here null
Log.d("foo", mRestTitles[i]);
entries.add(new Entry(mRestTitles[i], entryDescriptions[i]));
}
return entries;
}