在我的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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)