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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Firebase - Firestore 數(shù)據(jù)查詢兩次調用兩次

Firebase - Firestore 數(shù)據(jù)查詢兩次調用兩次

紫衣仙女 2022-06-04 09:19:45
我有一個代碼需要使用 Cloud Firestore 中的所有數(shù)據(jù)更新 UI,在一個集合下,然后需要在添加項目時更新 UI。我使用 Recycler 添加更多數(shù)據(jù):@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_events);    ButterKnife.bind(this);    Toolbar toolbar = findViewById(R.id.toolbar);    setSupportActionBar(toolbar);collection_events            .get()            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {                @Override                public void onComplete(@NonNull Task<QuerySnapshot> task) {                    if (task.isSuccessful()) {                        for (QueryDocumentSnapshot snapshot: Objects.requireNonNull(task.getResult())){                            EventsCurrent eventsCurrent = snapshot.toObject(EventsCurrent.class);                            eventsCurrent.setId(snapshot.getId());                            Log.d(TAG,snapshot.getId());                            eventsCurrentList.add(eventsCurrent);                        }                        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getApplicationContext());                        eventsAdapter = new EventsAdapter(EventsActivity.this,eventsCurrentList);                        eventsAdapter.setEventsCurrents(eventsCurrentList);recylerview_events.setLayoutManager(linearLayoutManager);                        recylerview_events.setHasFixedSize(true);                        recylerview_events.setAdapter(eventsAdapter);                        isFirstTime = false;                    }else {                        Log.d(TAG, "Error getting documents: ", task.getException());                    }                }            });}在這里,我同時使用get()& ,addSnapshotListener()因此我最初通過 獲取所有數(shù)據(jù),get()并通過 獲取更新或添加的數(shù)據(jù) addSnapshotListener()。監(jiān)聽器被調用并且我的數(shù)據(jù)加倍并且數(shù)據(jù)被填充兩次的問題。有人可以幫我嗎?
查看完整描述

2 回答

?
米脂

TA貢獻1836條經(jīng)驗 獲得超3個贊

監(jiān)聽器被調用并且我的數(shù)據(jù)加倍并且數(shù)據(jù)被填充兩次的問題。

發(fā)生這種情況是因為您同時使用get()&addSnapshotListener()來獲取數(shù)據(jù)。實際上意味著您從數(shù)據(jù)庫中獲取數(shù)據(jù)一次又一次,您再次獲取數(shù)據(jù)但實時,這就是您的數(shù)據(jù)翻倍的原因。如果要實時獲取數(shù)據(jù),只能使用addSnapshotListener(). 如果您只想獲得一次,只需使用get()呼叫即可。兩種方法具有相同的行為,但在 的情況下addSnapshotListener(),偵聽器保持活動狀態(tài),直到您將其刪除。


查看完整回答
反對 回復 2022-06-04
?
蝴蝶不菲

TA貢獻1810條經(jīng)驗 獲得超4個贊

我有同樣的問題,我通過在方法調用結束時使用'return@addSnapshotListener'來解決這個問題。


 mFirebaseFireStore.collection(AppConstant.FIREBASE_USER_TABLE).document(key).addSnapshotListener {result,error ->

    if(result==null){

       error?.message?.let { it1 -> Log.w("Error-Group", it1)

    }

           return@addSnapshotListener

        }


    if(result.exists())

      {

        //some code

      }

    return@addSnapshotListener

 }


查看完整回答
反對 回復 2022-06-04
  • 2 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號