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

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

如何在返回語(yǔ)句之前從 FirebaseFirestore 獲取所有數(shù)據(jù)

如何在返回語(yǔ)句之前從 FirebaseFirestore 獲取所有數(shù)據(jù)

縹緲止盈 2023-07-13 17:35:47
我需要一個(gè)函數(shù)來(lái)從 FirebaseFirestore 獲取所有數(shù)據(jù)/注釋。如何讓這個(gè)函數(shù)在返回之前等待所有數(shù)據(jù)?我認(rèn)為我創(chuàng)建的這個(gè)函數(shù)在主線程中不起作用,并且在從 firebase 獲取數(shù)據(jù)之前返回    public static ArrayList<NoteFB> getNotes() {        FirebaseFirestore db = FirebaseFirestore.getInstance();        final String TAG = "FB Adapter";        final ArrayList<NoteFB> doFBs = new ArrayList<>();        db.collection("notesItem")                .get()                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {                    @Override                    public void onComplete(@NonNull Task<QuerySnapshot> task) {                        if (task.isSuccessful()) {                            for (QueryDocumentSnapshot document : task.getResult()) {                                Log.d(TAG, document.getId() + " => " + document.getData());                                doFBs.add(document.toObject(NoteFB.class));                            }                        } else {                            Log.w(TAG, "Error getting documents.", task.getException());                        }                    }                });        return doFBs;    }        MyFBAdapter myFBAdapter = new MyFBAdapter(ShowActivity.this, FBAdapter.getNotes());        rvContacts.setAdapter(myFBAdapter);此代碼返回一個(gè)空的 ArrayList,它創(chuàng)建一個(gè)空的 recyclerview。
查看完整描述

2 回答

?
叮當(dāng)貓咪

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

最近出現(xiàn)了很多這樣的問(wèn)題。我不久前就找到了解決方案:使用任務(wù) API。


public static ArrayList<NoteFB> getNotes() {


    FirebaseFirestore db = FirebaseFirestore.getInstance();

    final String TAG = "FB Adapter";


    final ArrayList<NoteFB> doFBs = new ArrayList<>();


    try {

        Task<QuerySnapshot> taskResult = Tasks.await(db.collection("notesItem").get(), 2, TimeUnit.SECONDS)

        for (QueryDocumentSnapshot document : task.getResult()) {

            Log.d(TAG, document.getId() + " => " + document.getData());

            doFBs.add(document.toObject(NoteFB.class));

         }


    } catch(Exception e) {

         Log.w(TAG, "Error getting documents.", e.localizedString());

    }

    return doFBs

}

如果我犯了任何語(yǔ)法錯(cuò)誤,請(qǐng)?jiān)徫?,我?Java 有點(diǎn)生疏了。


確保您在主線程之外調(diào)用此代碼,否則它將崩潰。


查看完整回答
反對(duì) 回復(fù) 2023-07-13
?
烙印99

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

您可以為此使用接口


public interface NoteDataInterface {

        void onCompleted(ArrayList<NoteFB> listNotes);

    }

更改您的方法以使用接口:


 public static void getNotes(NoteDataInterface noteDataInterface) {


        FirebaseFirestore db = FirebaseFirestore.getInstance();

        final String TAG = "FB Adapter";


        final ArrayList<NoteFB> doFBs = new ArrayList<>();

        db.collection("notesItem")

                .get()

                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {

                    @Override

                    public void onComplete(@NonNull Task<QuerySnapshot> task) {

                        if (task.isSuccessful()) {

                            for (QueryDocumentSnapshot document : task.getResult()) {

                                Log.d(TAG, document.getId() + " => " + document.getData());

                                doFBs.add(document.toObject(NoteFB.class));

                            }

                        } else {

                            Log.w(TAG, "Error getting documents.", task.getException());

                        }

                       noteDataInterface.onCompleted(doFBs);

                    }

                });



    }

然后調(diào)用你的方法:


 getNoteData(new NoteDataInterface() {

            @Override

            public void onCompleted(ArrayList<NoteFB> listNotes) {

                Log.e("listNotes>>",listNotes.size()+"");

            }

        });


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

添加回答

舉報(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)