Я использую модификацию, чтобы получить список данных из API.Я хочу сохранить данные, которые я получаю в body.response для arrayList.Я могу сделать это, и я получаю элементы из нового arrayList, но кажется, что новый список не сохраняется.Когда я пытаюсь использовать его вне метода onResponse, я получаю сообщение об ошибке
Невозможно начать действие ... IndexOutOfBoundsException: Index 0, Size 0
Interface
public interface ServerApi {
@Headers("Accept: application/json")
@GET("cities")
Call<ArrayList<City>> getCities();
}
Действие
public class SomeActivity extends AppCompatActivity {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://url")
.addConverterFactory(GsonConverterFactory.create())
.build();
ServerApi serverApi = retrofit.create(ServerApi.class);
ArrayList<City> cityList = new ArrayList<City>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_parkings);
final TextView tv1 = findViewById(R.id.tv1);
final Call<ArrayList<City>> cities = serverApi.getCities();
cities.enqueue(new Callback<ArrayList<City>>() {
@Override
public void onResponse(Call<ArrayList<City>> call, Response<ArrayList<City>> response) {
for(int i=0; i<response.body().size(); i++){
City ct = new City(response.body().get(i).getId(), response.body().get(i).getName());
cityList.add(ct);
tv1.setText(cityList.get(i).getName());
}
}
@Override
public void onFailure(Call<ArrayList<City>> call, Throwable t) {
tv1.setText("failure " + t);
}
});
TextView c1 = findViewById(R.id.c1);
c1.setText(cityList.get(0).getName());
}
}
Строка tv1.setText(cityList.get(i).getName());
внутри метода onResponse работает хорошо.Но когда я пишу это из метода, приложение падает