java - 如何从 onNext() 访问 Observable.range() 索引
问题描述
我在 RXjava 代码下面编写了将图像列表上传到服务器。从服务器端,它将发送一个引用上传图像链接的响应。我将这些图像保存在我的本地存储中,如果只有特定图像成功上传,我应该从本地存储中删除删除该图像。
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
final String accessToken = sharedPref.getString(getString(R.string.access_token), "");
final ArrayList<String> imageLinks = new ArrayList<>();
Observable
.range(0, ImageFilePaths.size())
.flatMap(new Function<Integer, ObservableSource<ProductImageUploadResponse>>() {
@Override
public ObservableSource<ProductImageUploadResponse> apply(Integer index) {
JSONObject imageUploadKJsonObj = new JSONObject();
try {
imageUploadKJsonObj.put("version", "1.0");
imageUploadKJsonObj.put("action", "uploadimage");
} catch (JSONException e) {
e.printStackTrace();
}
File file = new File(ImageFilePaths.get(index));
MultipartBody.Part filePart = MultipartBody.Part.createFormData("Image", file.getName(),
RequestBody.create(MediaType.parse("image/*"), file));
RequestBody accessTokenRequestBody = RequestBody.create(MediaType.parse("text/plain"), accessToken);
RequestBody imageUploadRequestBody = RequestBody.create(MediaType.parse("text/plain"), imageUploadKJsonObj.toString());
return APIservice.uploadProductImageRx(accessTokenRequestBody, imageUploadRequestBody, filePart);
}
})
.retry(3)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new DisposableObserver<ProductImageUploadResponse>() {
@Override
public void onNext(ProductImageUploadResponse productImageUploadResponse) {
if(productImageUploadResponse.getResult() == 0){
imageLinks.add(productImageUploadResponse.getImage());
//Delete image from local storage
}
}
@Override
public void onError(Throwable e) {
// Handel this
}
@Override
public void onComplete() {
// Next operation
submitRequestEnquiryProduct(imageLinks);
}
});
问题是如何在onNext()
删除它的方法中访问上传图像的索引。如果可以从ImageFilePaths
数组列表访问索引,我可以获取路径并将其删除。有没有办法做到这一点?
解决方案
推荐阅读
- javascript - 如何用javascript切换不同的div
- linux - 如何添加几个平方的总和(bourne 脚本)
- c# - C# LINQ - 道具字符串的值为 System.Collections.Generic.List`1[System.String]
- python - 从python中的元组内部删除重叠的数字,这样没有2个元组具有相同的开始或结束数字
- android - 使用带有 TextInputLayout 的线性布局但遇到问题
- sql-server - SQL中多条记录重叠期间如何新建记录
- javascript - 使用 Javascript 更改外部 Web 应用程序中的值
- c# - 比较 C# 中“if”语句中的数据类型?
- apache-kafka - 优先考虑 Kafka 主题
- android - FLUTTER NoSuchMethodError:在 null 上调用了 getter 'debugDidSendFirstFrameEvent'