android - Android:在 MVVM 中使用 Transformations.switchMap 进行顺序调用
问题描述
我正在尝试对网络进行 2 次连续调用,其中第二次调用将第一次调用的结果作为参数。我正在尝试使用 MVVM 和 Transformations.switchMap 我得到一个异常“java.lang.IllegalArgumentException:无法为类 com.rdev.image.obj.FlickrResultSize 创建调用适配器”。有谁知道该怎么做?
public LiveData<ArrayList<String>> getValuesAPI(String url) {
LiveData<ArrayList<String>> ids = AbsentLiveData.create();
LiveData<ArrayList<String>> urls = AbsentLiveData.create();
final MutableLiveData<ArrayList<String>> updatedResult = new MediatorLiveData<>();
//This method waits until it has the data to process
ids = Transformations.switchMap(getValues(url), apiResponse-> {
ArrayList<String> listaIds = new ArrayList<>();
if(apiResponse.isSuccessful()) {
if (apiResponse.body != null) {
FlickrPhotos flickrPhotos = new FlickrPhotos();
flickrPhotos = apiResponse.body.getPhotos();
FlickrResultSize flickrResultSizes = new FlickrResultSize();
for(int i=0;i<flickrPhotos.getPhoto().size();i++){
String id = flickrPhotos.getPhoto().get(i).getId();
String link = Utils.createURL(2,id);
flickrResultSizes = getPhotos(link); -----------I want to call this, but I can't
Timber.d("depois do getPhotos");
listaIds.add(id);
}
updatedResult.postValue(listaIds);
}
}
});
return ids;
}
//调用网络
public FlickrResultSize getPhotos(String link){
return mMainApiHelper.getPhotos(link);
}
解决方案
推荐阅读
- c++ - C ++中的自相关/相关
- android-studio - 如何在 android studio 中启用软包装?
- python - “python -m”命令的包装器
- flutter - 如何在 Flutter 中正确添加共享插件
- react-native - 这个模块会在 expo 中工作还是反应原生?
- sql-server - 如何在 python 中正确使用 LIKE 和 '%%' 在数据库列表中搜索存储在占位符变量中的部分响应?
- linux - 为什么 Linux shell 命令在命令行中是正确的,但在 shell 文件中是错误的?
- python-3.x - 比较两个 numpy 数组中的元素会产生一个内存地址
- speech-to-text - 用于语音转文本的 Google 云存储访问令牌
- android - 如何在项目中使用 firebase 和 firebase 功能的现有 Flutter 应用程序中更新包名称?