2016-12-04 201 views
1

我使用FirebaseListAdapter並試圖獲得的從我的火力地堡數據庫開放的聊天室的列表,結構非常簡單:Android的火力地堡嵌套查詢

Database Structure

這是我所得到的,當我查詢:

{-KY99IS2mLzayD4HDyd6={location={...}, posts={....} , title="chatname"} 

而且我想要做到的,是得到數據,而ID的一部分,所以它會適合我的對象建設者,這樣的事情:

{location={...}, posts={....} , title="chatname"} 

我知道ChildEventListener這樣做,但我沒有選擇將它與FirebaseListAdapter一起使用,所以我希望還有另一種方法可以做到這一點。

我的代碼是:

FirebaseListAdapter<ChatRoom> firebaseListAdapter = new FirebaseListAdapter<ChatRoom>(this,ChatRoom.class,R.layout.chatslist_row,myRef3) { 
     @Override 
     protected void populateView(View v, ChatRoom chatRoom, int position) { 
      System.out.println(chatRoom.title); 
     } 

    }; 

但它不工作,因爲關鍵部分,它不能使用我的ChatRoom類對象生成器。

謝謝!

+0

相信我的問題http://stackoverflow.com/questions/40802754/android-firebase-list-data-from-keys/40812418#​​40812418。 –

+0

@ JohnO'Reilly其實不,它不同 –

+0

我認爲是嵌套數據的存在,你必須執行單獨的查詢來檢索....重新閱讀你的問題我不清楚如果是這樣的話或不是因爲你遇到的問題? –

回答

1

您可以先從子事件偵聽器獲取id(KY99IS2mLzayD4HDyd6)。 然後用id(KY99IS2mLzayD4HDyd6)創建一個新的數據庫引用並再次調用子事件監聽器。 mDatabase = databaseRef.getReference("chats/KY99IS2mLzayD4HDyd6"); 如果您致電mDatabase現在您將獲得{location={...}, posts={....} , title="chatname"}

我已經解決了我的問題。但不適用於FirebaseListAdapter。製作你自己的listview和適配器,這可能會更加靈活。

+0

啊,所以基本上沒有辦法做到這一點,我需要以舊的方式做到這一點。好,謝謝 –