如何使用Retrofit2从服务器获取list.size内部数据对象?

时间:2018-07-19 06:09:32

标签: android retrofit2

我正在使用Retrofit2,在这里我正在从服务器检索数据对象,该数据对象给出了内部存在的对象的列表,以及如何知道列表的大小。该列表将提供对象,因此通过这些对象,我可以检索数组中的客户端数据。

{
    "data": [{
        "ClientName": "Shoib hasan",
        "CompanyName": "097676",
        "CityName": "Badin",
        "ContactNo": "sfgt",
        "TotalBalance": "11000.00",
        "AddedOn": "2017-07-18"
    }, {
        "ClientName": "Musakan Chappal",
        "CompanyName": "Muskan Chappal",
        "CityName": "Badin",
        "ContactNo": "",
        "TotalBalance": "15000.00",
        "AddedOn": "2017-07-18"
    }]
}

我从类数据中检索数据对象

Data data = response.body;

现在获取存在于数据对象中的列表大小

public class Datum {

@SerializedName("ClientName")
@Expose
private String clientName;
@SerializedName("CompanyName")
@Expose
private String companyName;
@SerializedName("CityName")
@Expose
private String cityName;
@SerializedName("ContactNo")
@Expose
private String contactNo;
@SerializedName("TotalBalance")
@Expose
private String totalBalance;
@SerializedName("AddedOn")
@Expose
private String addedOn;

public String getClientName() {
    return clientName;
}

public void setClientName(String clientName) {
    this.clientName = clientName;
}

public String getCompanyName() {
    return companyName;
}

public void setCompanyName(String companyName) {
    this.companyName = companyName;
}

public String getCityName() {
    return cityName;
}

public void setCityName(String cityName) {
    this.cityName = cityName;
}

public String getContactNo() {
    return contactNo;
}

public void setContactNo(String contactNo) {
    this.contactNo = contactNo;
}

public String getTotalBalance() {
    return totalBalance;
}

public void setTotalBalance(String totalBalance) {
    this.totalBalance = totalBalance;
}

public String getAddedOn() {
    return addedOn;
}

public void setAddedOn(String addedOn) {
    this.addedOn = addedOn;
}

}

这是示例类

public class Example {

@SerializedName("data")
@Expose
private List<Datum> data ;

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

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

}

这是活动中的方法

 public void fetch_information(String CityId) {
    this.CityID = CityId;
    ApiInterface = ApiClient.getApiClient().create(Api.class);
    Call<Example> call = ApiInterface.GetClients(CityID);

    call.enqueue(new Callback<Example>() {
        @Override
        public void onResponse(Call<Example> call, Response<Example> response) {

            data = new Example();
              data.setData(response.body().getData());

             Integer clientlist_size = response.body().getData().size();


            prepareClientsData();
        }

        @Override
        public void onFailure(Call<Example> call, Throwable t) {

        }
    });
}
public void prepareClientsData() {

clients = new String[data.getData().size()];
    for(int i = 0; i<data.getData().size();i++){
        clients[i] = data.getData().get(i).getClientName();

    }
    client_adapter = new ArrayAdapter<String>(EzKhataActivity.this, android.R.layout.simple_list_item_1, clients);

    client_adapter.setDropDownViewResource(R.layout.spinner_dropdown_layout);
    client_spinner.setAdapter(client_adapter);

这就是我要得到的

image for data object on response body

2 个答案:

答案 0 :(得分:0)

使用这两个类别作为您的回复类别

  

Datum.class

public class Datum {

@SerializedName("ClientName")
@Expose
private String clientName;
@SerializedName("CompanyName")
@Expose
private String companyName;
@SerializedName("CityName")
@Expose
private String cityName;
@SerializedName("ContactNo")
@Expose
private String contactNo;
@SerializedName("TotalBalance")
@Expose
private String totalBalance;
@SerializedName("AddedOn")
@Expose
private String addedOn;

public String getClientName() {
return clientName;
}

public void setClientName(String clientName) {
this.clientName = clientName;
}

public String getCompanyName() {
return companyName;
}

public void setCompanyName(String companyName) {
this.companyName = companyName;
}

public String getCityName() {
return cityName;
}

public void setCityName(String cityName) {
this.cityName = cityName;
}

public String getContactNo() {
return contactNo;
}

public void setContactNo(String contactNo) {
this.contactNo = contactNo;
}

public String getTotalBalance() {
return totalBalance;
}

public void setTotalBalance(String totalBalance) {
this.totalBalance = totalBalance;
}

public String getAddedOn() {
return addedOn;
}

public void setAddedOn(String addedOn) {
this.addedOn = addedOn;
}

}
  

Result.class

public class Result{

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

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

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

}

在改造界面中使用Result class作为签名。

并使用response.body().getData().size()作为列表中的对象数。

浏览THIS LINK以获得更多说明。

答案 1 :(得分:0)

您可以将响应转换为jsonobject并获取json数组大小,如下所示:

JsonObject jsonObject = (JsonObject) response.body();
JsonArray result = jsonObject.getAsJsonArray("data");
int size = result.size();