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

Android 如何使用2从服务器获取list.size内部数据对象?,android,retrofit2,Android,Retrofit2,我使用的是Reformation2,这里我从服务器检索数据对象,它给出了内部对象的列表,以及如何知道列表的大小。该列表将提供对象,以便通过这些对象可以检索阵列中的客户端数据 { "data": [{ "ClientName": "Shoib hasan", "CompanyName": "097676", "CityName": "Badin", "ContactNo": "sfgt", "TotalBala

我使用的是Reformation2,这里我从服务器检索数据对象,它给出了内部对象的列表,以及如何知道列表的大小。该列表将提供对象,以便通过这些对象可以检索阵列中的客户端数据

{
    "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;
}

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

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;
}

}
公共类示例{
@SerializedName(“数据”)
@暴露
私人名单数据;
公共列表getData(){
返回数据;
}
公共无效设置数据(列表数据){
这个数据=数据;
}
}
这是活动中的方法

 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);
public void fetch_信息(字符串CityId){
this.CityID=CityID;
apinterface=ApiClient.getApiClient().create(Api.class);
Call Call=apinterface.GetClients(CityID);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
数据=新示例();
data.setData(response.body().getData());
整数clientlist_size=response.body().getData().size();
prepareClientsData();
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
}
公共无效准备客户数据(){
clients=新字符串[data.getData().size()];

对于(int i=0;i使用这两个类作为您的响应类

基准类

结果类

公共类结果{
@SerializedName(“数据”)
@暴露
私有列表数据=null;
公共列表getData(){
返回数据;
}
公共无效设置数据(列表数据){
这个数据=数据;
}
}
在改装界面中使用
结果类作为签名。

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


查看更多解释。

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

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

你的
Data
类是什么?Data=new Example();Data.setData(response.body().getData());Integer clientlist_size=response.body().getData().size();这使数据数组列表大小为0;示例是什么?示例是改装接口中的一个类作为签名,就像上面提到的结果类一样,即data=new Result();data.setData(response.body().getData());我得到的响应是作为数据对象的,但它是空的。我确实发布了大部分响应,而且图像将显示我得到的结果。问题不在于代码,它工作正常问题在于Api接口,我正在传递@post(“ClientsInCity”)调用GetClients(@Query“city”字符串CityId);而应该是Call GetClients(@Field“city”字符串CityId);