Java 将多个任务列表的结果强制转换为其在tasks.whenAllSuccess()中的POJO(Firestore)
但是在两个任务列表的情况下,如何为每个列表投射结果Java 将多个任务列表的结果强制转换为其在tasks.whenAllSuccess()中的POJO(Firestore),java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,但是在两个任务列表的情况下,如何为每个列表投射结果 Task combineUserTasks = Tasks.whenAllSuccess(fetchUserTasks).addOnSuccessListener(new OnSuccessListener<List<Object>>() { @Override public void onSuccess(List<Object>
Task combineUserTasks = Tasks.whenAllSuccess(fetchUserTasks).addOnSuccessListener(new OnSuccessListener<List<Object>>() {
@Override
public void onSuccess(List<Object> objects) {
for (Object object : objects) {
UserModel userModel = ((DocumentSnapshot) object).toObject(UserModel.class);
userModelArrayList.add(userModel);
}
});
Tasks.whenAllSuccess(combineUserTasks,CombineListener).addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共void(列出对象){
//如何在此处获取/转换单个POJO的数据?
}
});
更新1:
Tasks.whenAllSuccess(combineUserTasks, combineLikeTask).addOnSuccessListener(new OnSuccessListener<List<Object>>() {
@Override
public void onSuccess(List<Object> objects) {
// How to fetch/cast data for individual POJO here?
}
});
Tasks.whenAllSuccess(combineUserTasks,CombineListener).addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共void(列出对象){
用于(对象:对象){
UserModel UserModel=((DocumentSnapshot)对象).toObject(UserModel.class);
LikeModel LikeModel=((DocumentSnapshot)对象).toObject(LikeModel.class);
添加(userModel);
likeModelArrayList.add(likeModel);
}
}
});
据我所知,您有两种类型的列表,userModelArrayList
属于UserModel类型,而likeModelArrayList
属于LikeModel类型。为了能够将每个对象添加到其相应的列表类型中,您应该创建UserModel和LikeModel类型的任务对象列表。因此,请更改以下代码行:
Tasks.whenAllSuccess(combineUserTasks, combineLikeTask).addOnSuccessListener(new OnSuccessListener<List<Object>>() {
@Override
public void onSuccess(List<Object> objects) {
for (Object object : objects) {
UserModel userModel = ((DocumentSnapshot) object).toObject(UserModel.class);
LikeModel likeModel = ((DocumentSnapshot) object).toObject(LikeModel.class);
userModelArrayList.add(userModel);
likeModelArrayList.add(likeModel);
}
}
});
List<Task<UserModel>> fetchUserTasks = new ArrayList<>();
List<Task<LikeModel>> fetchLikeTasks = new ArrayList<>();
现在,您将使用相应的对象类型填充每个列表。相同的循环不起作用?@DougStevenson您是否建议这样做?
combineUserTasks
,combineLikeTask
返回不同的数据谢谢@AlexMamo我会尝试一下。尝试一下并随时通知我。很抱歉,我正在重新考虑问题的解决方案,因此无法及时响应。是的,你的解决方案确实帮助了我。当做
List<Task<DocumentSnapshot>> fetchUserTasks = new ArrayList<>();
List<Task<DocumentSnapshot>> fetchLikeTasks = new ArrayList<>();
List<Task<UserModel>> fetchUserTasks = new ArrayList<>();
List<Task<LikeModel>> fetchLikeTasks = new ArrayList<>();
Tasks.whenAllSuccess(combineUserTasks, combineLikeTask).addOnSuccessListener(new OnSuccessListener<List<Object>>() {
@Override
public void onSuccess(List<Object> objects) {
for (Object object : objects) {
if (object instanceof UserModel) {
userModelArrayList.add(userModel);
} else if (object instanceof LikeModel) {
likeModelArrayList.add(likeModel);
}
}
}
});