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

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

在Android中等待Firebase異步檢索數據

在Android中等待Firebase異步檢索數據

牛魔王的故事 2019-07-31 10:22:48
在Android中等待Firebase異步檢索數據我需要存儲他自己異步的FireBase getValue方法的結果。我不能使用類似“onPostExecute()”的東西,為了我的目的,我無法執(zhí)行“onDataChange()”的所有操作,因為我需要在將來的其他活動中引用一些參考。這是我的片段檢索數據:    List<Village> villages = new LinkedList<>();     Firebase ref = new Firebase("MYFIREBASEURL").child("village");     ref.addValueEventListener(new ValueEventListener() {         @Override         public void onDataChange(DataSnapshot snapshot) {             spinnerArray.clear();             for (DataSnapshot postSnapshot : snapshot.getChildren()) {                 Village v = postSnapshot.getValue(Village.class);                 villages.add(v);             }         }         @Override         public void onCancelled(FirebaseError firebaseError) {             System.out.println("The read failed: " + firebaseError.getMessage());         }     });如果我嘗試從“onDataChange”中讀取村莊,我自然會為他的異步生活讀取空值。有一種方法可以確保調用onDataChange嗎?
查看完整描述

3 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

對不起,如果這不是你想要的,因為我的英語太糟糕了。您可以定義一個偵聽器接口來處理它。例:

 public interface OnGetDataListener {
    public void onStart();
    public void onSuccess(DataSnapshot data);
    public void onFailed(DatabaseError databaseError);}

我創(chuàng)建了一個自定義函數來獲取Database.class中的數據:

  public void mReadDataOnce(String child, final OnGetDataListener listener) {
    listener.onStart();
   FirebaseDatabase.getInstance().getReference().child(child).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            listener.onSuccess(dataSnapshot);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            listener.onFailed(databaseError);
        }
    });}

當我想從Main.class獲取數據時,我會:

private void mCheckInforInServer(String child) {
    new Database().mReadDataOnce(child, new OnGetDataListener() {
        @Override
        public void onStart() {
            //DO SOME THING WHEN START GET DATA HERE
        }

        @Override
        public void onSuccess(DataSnapshot data) {
           //DO SOME THING WHEN GET DATA SUCCESS HERE
        }

        @Override
        public void onFailed(DatabaseError databaseError) {
           //DO SOME THING WHEN GET DATA FAILED HERE
        }
    });}

通過這種方式,您可以重用您的方法并處理數據。


查看完整回答
反對 回復 2019-07-31
  • 3 回答
  • 0 關注
  • 398 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號