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);
            }
        }
    }
});