このオーバーライドされたメソッド内からクラス変数を設定しようとしています。これが別のスレッドで実行されることを理解しています。そこから出力すると、値が得られます。以下のメソッドで出力すると、値は null になります。
このクラス変数を正しい方法で設定するにはどうすればよいですか?
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;
}