Android Firebase嵌套查询

时间:2016-12-04 16:43:25

标签: android listview firebase firebase-realtime-database firebaseui

我使用FirebaseListAdapter并尝试从Firebase数据库获取打开的聊天室列表,结构非常简单:

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类对象构建器。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以先从子事件监听器获取id(KY99IS2mLzayD4HDyd6)。 然后使用id(KY99IS2mLzayD4HDyd6)创建一个新的数据库引用,并再次调用子事件侦听器。 mDatabase = databaseRef.getReference("chats/KY99IS2mLzayD4HDyd6"); 如果您现在致电mDatabase,您将获得{location={...}, posts={....} , title="chatname"}

我已经解决了我的问题。但不适用于FirebaseListAdapter。制作自己的列表视图和适配器可能更灵活。