第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Android Firestore 將文檔引用數(shù)組轉(zhuǎn)換為 List<Pojo>

Android Firestore 將文檔引用數(shù)組轉(zhuǎn)換為 List<Pojo>

慕哥6287543 2021-07-15 18:08:47
在我的 Firestore 中,我有一個(gè)users集合,其中的文檔可以有一個(gè)bookmarks字段,它是一個(gè)引用數(shù)組:這些引用中的每一個(gè)都指向teachers集合中的一個(gè)文檔:在我的 Android 應(yīng)用程序中,我想創(chuàng)建一個(gè)方法getBookmarks,該方法返回一個(gè)ListPOJO,每個(gè) POJO 代表一個(gè)老師。這是我編碼的,但我認(rèn)為有兩個(gè)問(wèn)題:我無(wú)法將 a 返回List<TeacherPojo>到 my callback,因?yàn)槲艺趩为?dú)獲取每個(gè)文檔參考我認(rèn)為為集合中的每個(gè)項(xiàng)目附加一個(gè)回調(diào)(它的大小由用戶控制,用戶可以擁有他/她想要的任意數(shù)量的書簽)可能會(huì)對(duì)性能產(chǎn)生很大的影響。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?                });            });        });}有沒(méi)有更好的方法來(lái)編碼這種方法,以獲得List<TeacherPojo>(并且可能不會(huì)對(duì)性能產(chǎn)生太大影響)?
查看完整描述

1 回答

?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

是的。請(qǐng)查看以下代碼行:


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實(shí)際上是包含類型對(duì)象的列表TeacherPojo。


查看完整回答
反對(duì) 回復(fù) 2021-07-29
  • 1 回答
  • 0 關(guān)注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)