如何设置与观察发布者不同的字段?
how to set different fields from observing a publisher?
在观察为某些 table 中的图片设置 ID 的上传功能时,我需要为 profilePictreId
和 wallpaperPictureId
属性设置这些 ID。我没有找到任何解决方案,而且 flatMap 或其他功能太难理解了。我可以像下面提到的那样获取 ID,但我需要将它们分开,以便我可以将它们放在不同的字段中。要么给我一个解决方案或一个好的文件。
不用担心代码中的其他功能我只需要在订阅时为 Rx 提供分离功能。谢谢
更多说明:
上传后我需要设置两个属性,但我只应该在订阅方法中设置 onSuccessUpload
。我尝试了很多方法,但我将两个 ID 都设置为 profilePictureId
和 wallpaperPictureId
,这是一个问题,它们应该分开。
对 s1 变量的响应:
E/PictureIds@@@>>>: [4e6a3956bf8743b78fe4ffa546f627f0.png]
E/Utils: {"attachments":"4e6a3956bf8743b78fe4ffa546f627f0.png","status":"SUCCESS","message":"-"}
E/PictureIds@@@>>>: [7712b7f081d045e8b94f077e40994290.png]
E/Utils: {"attachments":"7712b7f081d045e8b94f077e40994290.png","status":"SUCCESS","message":"-"}
private Disposable picture; // this varaibale is set in onSuccessUpload to subscribe
private void onSuccessUpload(){
setPicture(RxBus.sendResponseUploadLink()
.subscribe(s1 -> {
String[] id = new String[]{s1.getString("attachments")};
Timber.tag("PictureIds@@@>>>").e(Arrays.toString(id));
setProfilePictureId(id[0]); // problem is here
setWallpaperPictureId(id[1]); // problem is here
}));
}
private void uploadPicture(String path){
Upload uploadPicture = new Upload();
uploadPicture.upload(getToken(), path);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.channel_profile_image:
selectProfileImage();
break;
case R.id.channel_cover_image:
selectCoverImage();
break;
case R.id.submit_social_channel:
onSuccessUpload();
uploadPicture(getProfileFilePath());
uploadPicture(getWallpaperFilePath());
}
}
订阅函数 returns 订阅对象,允许您管理已创建的可观察对象和订阅者之间的关系。
您只有一个订阅者,所以最好的办法是在您的 API 回复中添加 imageType
,例如,
{
"attachments":"4e6a3956bf8743b78fe4ffa546f627f0.png",
"imageType":"Wallpaper"
"status":"SUCCESS",
"message":"-"
}
因此在订阅者中您可以区分您上传的图片并相应地调用不同的功能。
在观察为某些 table 中的图片设置 ID 的上传功能时,我需要为 profilePictreId
和 wallpaperPictureId
属性设置这些 ID。我没有找到任何解决方案,而且 flatMap 或其他功能太难理解了。我可以像下面提到的那样获取 ID,但我需要将它们分开,以便我可以将它们放在不同的字段中。要么给我一个解决方案或一个好的文件。
不用担心代码中的其他功能我只需要在订阅时为 Rx 提供分离功能。谢谢
更多说明:
上传后我需要设置两个属性,但我只应该在订阅方法中设置 onSuccessUpload
。我尝试了很多方法,但我将两个 ID 都设置为 profilePictureId
和 wallpaperPictureId
,这是一个问题,它们应该分开。
对 s1 变量的响应:
E/PictureIds@@@>>>: [4e6a3956bf8743b78fe4ffa546f627f0.png]
E/Utils: {"attachments":"4e6a3956bf8743b78fe4ffa546f627f0.png","status":"SUCCESS","message":"-"}
E/PictureIds@@@>>>: [7712b7f081d045e8b94f077e40994290.png]
E/Utils: {"attachments":"7712b7f081d045e8b94f077e40994290.png","status":"SUCCESS","message":"-"}
private Disposable picture; // this varaibale is set in onSuccessUpload to subscribe
private void onSuccessUpload(){
setPicture(RxBus.sendResponseUploadLink()
.subscribe(s1 -> {
String[] id = new String[]{s1.getString("attachments")};
Timber.tag("PictureIds@@@>>>").e(Arrays.toString(id));
setProfilePictureId(id[0]); // problem is here
setWallpaperPictureId(id[1]); // problem is here
}));
}
private void uploadPicture(String path){
Upload uploadPicture = new Upload();
uploadPicture.upload(getToken(), path);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.channel_profile_image:
selectProfileImage();
break;
case R.id.channel_cover_image:
selectCoverImage();
break;
case R.id.submit_social_channel:
onSuccessUpload();
uploadPicture(getProfileFilePath());
uploadPicture(getWallpaperFilePath());
}
}
订阅函数 returns 订阅对象,允许您管理已创建的可观察对象和订阅者之间的关系。
您只有一个订阅者,所以最好的办法是在您的 API 回复中添加 imageType
,例如,
{
"attachments":"4e6a3956bf8743b78fe4ffa546f627f0.png",
"imageType":"Wallpaper"
"status":"SUCCESS",
"message":"-"
}
因此在订阅者中您可以区分您上传的图片并相应地调用不同的功能。