Приложение не получает все данные от модифицированного API - PullRequest
0 голосов
/ 03 мая 2019

Я закончил обучение с https://www.simplifiedcoding.net/retrofit-android-example/ И я хотел создать свой собственный звонок, я хотел получить от API новейшую валютную биржу, но у меня возникла проблема (я так думаю) с моей модельюучебный класс.Я немного изменил код и получил данные в виде «базы» и «даты», но когда я пытаюсь получить какое-то значение валюты (например, лев), программа показывает мне всегда 0.0.Как я могу это исправить?Я прав насчет этого модельного класса?Есть ли проблема?

Модель

public class Model  {
private String base,date;
private double BGN;

public Model(String base, String date, double BGN) {
    this.base = base;
    this.date = date;
    this.BGN = BGN;
}

public String getBase() {
    return base;
}

public String getDate() {
    return date;
}
public double getBGN() {
    return BGN;
 }
}


Api (interface)

public interface Api {

String BASE_URL = "https://api.exchangeratesapi.io/";

@GET("latest")
Call<Model> getCurrency();
}

MainActivity

public class MainActivity extends AppCompatActivity {

private TextView textViewResult;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textViewResult = (TextView) findViewById(R.id.label);

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(Api.BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    Api api = retrofit.create(Api.class);
    Call<Model> call = api.getCurrency();
    call.enqueue(new Callback<Model>() {
        @Override
        public void onResponse(Call<Model> call, Response<Model> response) {

            List<Model> currencyList = Collections.singletonList(response.body());

            for (Model currency : currencyList) {
                String content = "";
                content += "Base: " + currency.getBase() + "\n";
                content += "Date: " + currency.getDate() + "\n";
                content += "BGN: " + currency.getBGN() + "\n";
                textViewResult.append(content);
            }
        }
        @Override
        public void onFailure(Call<Model> call, Throwable t) {
            Toast.makeText(MainActivity.this, t.getMessage(), Toast.LENGTH_LONG).show();

        }
    });
 }
}

1 Ответ

1 голос
/ 03 мая 2019

Чтобы получить все данные из модернизации, вам нужно два класса POJO. Они должны быть такими, где вы добавляете методы и переменные для всех необходимых вам ставок:

public class Model {
 private String base;
 private String date;
 Rates RatesObject;


 // Getter Methods 

 public String getBase() {
  return base;
 }

 public String getDate() {
  return date;
 }

 public Rates getRates() {
  return RatesObject;
 }

 // Setter Methods 

 public void setBase(String base) {
  this.base = base;
 }

 public void setDate(String date) {
  this.date = date;
 }

 public void setRates(Rates ratesObject) {
  this.RatesObject = ratesObject;
 }
}


public class Rates {
 private float CAD;
 private float CHF;
 private float GBP;
 private float SEK;
 private float EUR;
 private float USD;


 // Getter Methods 

 public float getCAD() {
  return CAD;
 }

 public float getCHF() {
  return CHF;
 }

 public float getGBP() {
  return GBP;
 }

 public float getSEK() {
  return SEK;
 }

 public float getEUR() {
  return EUR;
 }

 public float getUSD() {
  return USD;
 }

 // Setter Methods 

 public void setCAD(float CAD) {
  this.CAD = CAD;
 }

 public void setCHF(float CHF) {
  this.CHF = CHF;
 }

 public void setGBP(float GBP) {
  this.GBP = GBP;
 }

 public void setSEK(float SEK) {
  this.SEK = SEK;
 }

 public void setEUR(float EUR) {
  this.EUR = EUR;
 }

 public void setUSD(float USD) {
  this.USD = USD;
 }
}
...