java - 应用程序未从改造 api 获取所有数据
问题描述
我从https://www.simplifiedcoding.net/retrofit-android-example/完成了 turial 我想创建自己的调用,我想从 API 获取最新的货币兑换,但我遇到了一个问题(我想是的就是这样)和我的模型课。我已经更改了一些代码,并且我收到了“基础”和“日期”的数据,但是当我试图获得一些货币价值时(让我们以 BGN 为例)程序显示我总是 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();
}
主要活动
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();
}
});
}
}
- Api,我尝试使用https://exchangeratesapi.io/
解决方案
要从改造中获取所有数据,您需要两个 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;
}
}
推荐阅读
- reactjs - 使用断点防止布局移位
- oracle - 如何在 OBIEE10g 中启用更改密码
- database - 如何在octobercms上使用数据库mongodb?
- java - Tomcat 无法读取 JNDI xml 文件
- java - 为什么在java中合并两个排序的链表不起作用?
- c++ - 为什么 std::regex_match 会产生不同的结果
- android - 在 Android Studio 中以编程方式从应用程序触发系统的暗模式
- flutter - 如何从 Parse 实时查询流中返回一个字符串?
- node.js - 生产出错;在视图目录“views”中查找视图“login”失败
- sublimetext3 - Sublime Text 3.2.1:我如何在输入时摆脱这些弹出窗口?