Получить данные не из массива с помощью Retrofit2
У меня возникла проблема с получением данных. Я использую Retrofit в своем приложении. Когда я запрашиваю данные, то, чтобы получить их, мне приходит массив. А в данном случае, как я понял, я не могу получить данные, так как они не в массиве.
Вот так выглядит мой код сейчас
Intent intent = getIntent();
String login = intent.getStringExtra("login");
JsonAPI jsonAPI = ApiClient.getApiClient().create(JsonAPI.class);
Call<ArrayList<Model>> call = jsonAPI.getUsers(login);
call.enqueue(new Callback<ArrayList<Model>>() {
@Override
public void onResponse(@NonNull Call<ArrayList<Model>> call, @NonNull Response<ArrayList<Model>> response) {
if (response.isSuccessful()) {
JSONArray jsonarray = null;
try {
jsonarray = new JSONArray(new Gson().toJson(response.body()));
} catch (JSONException jsonException) {
jsonException.printStackTrace();
}
for (int i = 0; i < Objects.requireNonNull(jsonarray).length(); i++) {
JSONObject jsonObject = null;
try {
jsonObject = jsonarray.getJSONObject(i);
} catch (JSONException jsonException) {
jsonException.printStackTrace();
}
try {
assert jsonObject != null;
et_login.setText(jsonObject.getString("login"));
et_id.setText(jsonObject.getString("id"));
} catch (JSONException jsonException) {
jsonException.printStackTrace();
}
}
}
}
@Override
public void onFailure(@NonNull Call<ArrayList<Model>> call, @NonNull Throwable t) {
}
});
Как написать код так, чтобы можно было изъять нужные мне данные?
Ответы (1 шт):
Автор решения: Michael
→ Ссылка
Проблема в том, что я вызываю Callback массива, когда нужно вызывать непосредственно данные из Model.
Вот так выглядит обновленный код
Intent intent = getIntent();
String login = intent.getStringExtra("login");
JsonAPI jsonAPI = ApiClient.getApiClient().create(JsonAPI.class);
Call<Model> call = jsonAPI.getUsers(login);
call.enqueue(new Callback<Model>() {
@Override
public void onResponse(@NonNull Call<Model> call, @NonNull Response<Model> response) {
et_login.setText(Objects.requireNonNull(response.body()).getLogin());
et_id.setText(Objects.requireNonNull(response.body()).getId());
}
@Override
public void onFailure(@NonNull Call<Model> call, @NonNull Throwable t) {
}
});
Спасибо за подсказку Wlad