java–Android Firestore将文件引用数组转换为List

java–Android Firestore将文件引用数组转换为List,第1张

概述在我的Firestore中,我有一个用户集合,其中文档可以有一个书签字段,这是一个引用数组:这些参考中的每一个都指向教师集合中的文档:在我的Android应用程序中,我想创建一个方法getBookmarks,它返回一个POJO列表,每个POJO代表一个教师.这是我编码的,但我认为有两个问题:>我无法返回Li

在我的Firestore中,我有一个用户集合,其中文档可以有一个书签字段,这是一个引用数组

这些参考中的每一个都指向教师集合中的文档:

在我的AndroID应用程序中,我想创建一个方法getBookmarks,它返回一个POJO列表,每个POJO代表一个教师.这是我编码的,但我认为有两个问题:

>我无法返回List< TeacherPojo>我的回调,因为我得到了每个文件的参考
>我认为为集合中的每个项目附加一个回调(用户控制的大小,用户可以拥有他/她想要的多个书签)可能会对性能产生很大影响.

public voID getBookmarks(@NonNull OnSuccessListener<List<TeacherPojo>> callback) {    checkNotNull(callback);    // document reference points to the user document which is calling this method    documentReference.get()        .addOnSuccessListener((documentSnapshot) -> {            ArrayList<documentReference> teacherReferences = (ArrayList<documentReference>) documentSnapshot.get("bookmarks");            Iterables.forEach(teacherReferences, (documentReference) -> {            documentReference.get()                .addOnSuccessListener((teacherSnapshot) -> {                TeacherPojo teacherPojo = teacherSnapshot.toObject(TeacherPojo.class);                    // Now?                });            });        });}

是否有更好的方法来编码此方法,以获得List< TeacherPojo> (可能没有对表演产生太大影响)?

解决方法:

是的.请参阅以下代码行:

FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();if (firebaseUser != null) {    String uID = firebaseUser.getUID();    rootRef.collection("users").document(uID).get().addOnCompleteListener(new OnCompleteListener<documentSnapshot>() {        @OverrIDe        public voID onComplete(@NonNull Task<documentSnapshot> task) {            if (task.isSuccessful()) {                documentSnapshot document = task.getResult();                if (document.exists()) {                    List<documentReference> List = (List<documentReference>) document.get("bookmarks");                    List<Task<documentSnapshot>> tasks = new ArrayList<>();                    for (documentReference documentReference : List) {                        Task<documentSnapshot> documentSnapshottask = documentReference.get();                        tasks.add(documentSnapshottask);                    }                    Tasks.whenAllSuccess(tasks).addOnSuccessListener(new OnSuccessListener<List<Object>>() {                        @OverrIDe                        public voID onSuccess(List<Object> List) {                            //Do what you need to do with your List                            for (Object object : List) {                                TeacherPojo tp = ((documentSnapshot) object).toObject(TeacherPojo.class);                                Log.d("TAG", tp.getFirstname());                            }                        }                    });                }            }        }    });}

所以List< Object> List实际上是包含TeacherPojo类型对象的列表.

总结

以上是内存溢出为你收集整理的java – Android Firestore将文件引用数组转换为List全部内容,希望文章能够帮你解决java – Android Firestore将文件引用数组转换为List所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1103063.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存