0
이 오버라이드 된 메소드 내에서 클래스 변수를 설정하려고합니다. 나는 이것이 다른 스레드에서 실행된다는 것을 알고 있습니다. 거기서 출력하면 값을 얻습니다. 아래의 방법으로 출력하면 값은 null입니다.Android의 Response.Listener의 onResponse 메소드 내에서 클래스 변수를 업데이트하려고 시도했습니다.
이 클래스 변수를 올바른 방법으로 설정하는 방법은 무엇입니까? 그 인터페이스를 구현))
public interface yourInterface
{
public void updateMyVariable(String variable);
}
2)
1 즉, 어디서든 사용할 수있다 (당신의 변수로 매개 변수를 사용하여 자신 만의 인터페이스를 만들기 :
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;
}