Данные не принимаются с помощью модернизации - PullRequest
0 голосов
/ 28 сентября 2018

Я использую модификацию для получения данных Json, но что-то не так.Данные не принимаются.

Ниже приведен класс моей модели

public class DataList {
@SerializedName("pariyojanaId")
    @Expose
    private Float pariyojanaId;
    @SerializedName("projectStatus")
    @Expose
    private String projectStatus;
    @SerializedName("heading")
    @Expose
    private String heading;
    @SerializedName("projectNumber")
    @Expose
    private Float projectNumber;
    @SerializedName("fieldTitle")
    @Expose
    private String fieldTitle;
    @SerializedName("targetedGroup")
    @Expose
    private String targetedGroup;

//Getter Setter
}

Мой интерфейс

public interface PariyojanaInterface {
@GET("projectBudget/pariyojanaListForMobile")
Call<List<DataList>> getData(
        @Query("memberId") int id);
}

У меня работает интерфейс API.Ниже приведена моя функция модификации.

 apiInterface = ApiClient.getApiClient().create(PariyojanaInterface.class);
    Call<List<DataList>> call = apiInterface.getData(id);
    Log.e("url", call.request().toString());
    call.enqueue(new Callback<List<DataList>>() {
        @Override
        public void onResponse(Call<List<DataList>> call, Response<List<DataList>> response) {
            Log.e("url", "hello");
            posts =  response.body();
            adapter = new PariyojanaAdapter(posts,getApplicationContext());
            recyclerView.setAdapter(adapter);

            adapter.notifyDataSetChanged();
        }

        @Override
        public void onFailure(Call<List<DataList>> call, Throwable t) {
            Log.e("error",t.getMessage());
        }
    });

Когда я запускаю эту программу, до строки

Log.e("url", call.request().toString());

Я получаю ответ, но после этого в строке

call.enqueue(new Callback<List<DataList>>() {}

Я думаю, что есть какая-то проблема.Я не могу запустить мою программу после этого.Кто-нибудь, пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

вы не можете напрямую обращаться к массиву, не проходя через внешний объект, вам понадобится еще один класс pojo, такой как:

DataResponse.java

    public class DataResponse {

@SerializedName("data")
@Expose
private List<DataList> data = null;

public List<DataList> getData() {
return data;
}

public void setData(List<DataList> data) {
this.data = data;
}

}

Измените все List<DataList> на DataResponse, т. Е. Преобразуйте свой сетевой вызов следующим образом:

apiInterface = ApiClient.getApiClient().create(PariyojanaInterface.class);
Call<DataResponse> call = apiInterface.getData(id);
Log.e("url", call.request().toString());
call.enqueue(new Callback<DataResponse>() {
    @Override
    public void onResponse(Call<DataResponse> call, Response<DataResponse> response) {
        Log.e("url", "hello");
        ArrayList<DataList> post_list =  new ArrayList<>(response.body().getData());
        adapter = new PariyojanaAdapter(post_list,getApplicationContext());
        recyclerView.setAdapter(adapter);

        adapter.notifyDataSetChanged();
    }

    @Override
    public void onFailure(Call<DataResponse> call, Throwable t) {
        Log.e("error",t.getMessage());
    }
});

и измените интерфейс следующим образом

    public interface PariyojanaInterface {
@GET("projectBudget/pariyojanaListForMobile")
Call<DataResponse> getData(
        @Query("memberId") int id);
}

Как я уже говорил, ваша конечная точка возвращаетсяобъект, а не массив.Поэтому укажите объект в качестве возвращаемых параметров для ваших обратных вызовов

0 голосов
/ 28 сентября 2018

Попробуйте этот поток

               try {
                    JSONObject jsonObject = new JSONObject(resultJSONResponse);

                    JSONArray jsonArray = jsonObject.getJSONArray("data");

                    for (int i = 0; i < jsonArray.length(); i++)
                    {
                        JSONObject o = jsonArray.getJSONObject(i);

                                strid = o.getString("pariyojanaId");
                                strstatus = o.getString("projectStatus");

                                showMethod();

                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...