java - RxJava 从 Openweathermap 获取多个城市天气
问题描述
首先,我是rxjava的新手。我制作了一个简单的天气应用程序,它从openweathermap API返回城市的天气数据。我结合了retrofit2和rxjava。但我想按顺序排列多个城市。实际上,我可以通过创建单独的 observable 来做到这一点,例如:
Observable<WeatherUpdated> observableAnkara = service.getWeatherData("Ankara",API_KEY);
observableAnkara.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<WeatherUpdated>() {
@Override
public void onSubscribe(Disposable d)
{
}
@Override
public void onNext(WeatherUpdated weatherUpdated)
{
tv.setText(weatherUpdated.getWeather().get(0).getDescription());
}
@Override
public void onError(Throwable e)
{
e.printStackTrace();
}
@Override
public void onComplete()
{
}
});
Observable<WeatherUpdated> observableIstanbul = service.getWeatherData("Istanbul",API_KEY);
observableIstanbul
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<WeatherUpdated>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(WeatherUpdated weatherUpdated)
{
tv_Istanbul.setText(weatherUpdated.getWeather().get(0).getDescription());
tv_Istanbul.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
在安卡拉之后,我想在文本中显示伊斯坦布尔的天气状况。我怎样才能做到这一点?我搜索了它,有很多解决方案,如 concat、startWith、zip,但哪一个是正确的?我对他们感到困惑。
请你帮助我好吗?
解决方案
你可以有一个城市控制地图:
Map<String, Control> cityControls= getCityControls();
接着
Observable
.fromArray(cities.keySet().toArray())
.flatMap(city -> service.getWeatherData(city, API_KEY).map(data -> new Pair<String, String>(city, data.getWeather().get(0).getDescription())))
.observeOn(...)
.subscribe(data -> citiesControls[data.getKey()].setText(data.getValue()))
推荐阅读
- javascript - 访问控制允许来源错误
- reactjs - 将配置添加到 package.json 有什么好处?
- python - 如何通过 Python Socket 发送原始 XML 而不是字节数据?
- sql - 以图形方式自动过滤列
- android - 我想通过电子邮件更改我的密码。我已经尝试过在这个论坛上给出的答案,但仍然无法做到
- python - 设置 random.seed() 以重新创建模拟行为和选择种子的影响
- php - 使用 codeigniter 在查询中获得额外的报价
- r - 夏皮罗-威尔克检验:阿尔法通货膨胀
- google-app-maker - 根据应用程序制造商的旧记录创建新记录
- python - 如何使用python以字节为单位查找图像的大小?