访问Firebase查询中的第一个Firebase节点数据

时间:2016-07-03 04:22:55

标签: android firebase android-recyclerview firebase-realtime-database

我有一个Firebase数据库查询返回100个子节点。然后我将节点放入FirebaseRecyclerAdapter,以便数据显示在回收器视图上。这一切都很好。现在我需要访问最新的元素及其Firebase密钥,但是无法弄明白(应该很容易,我一定错过了一些明显的东西)。如何在返回的查询或适配器中获取最新元素及其Firebase密钥?

要获得100个子节点,我使用:

Query publishedPostsQuery = mFirebaseDatabase.child("posts").limitToFirst(100);

然后我填充了Firebase回收站适配器:

FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>(Post.class, R.layout.post_items, PostViewHolder.class, postsQuery) { ... };

然后在回收站视图中使用此适配器。

如何通过Query或FirebaseRecyclerAdapter访问第一个Post对象及其Firebase密钥?

我的firebase数据库结构如下所示:

-posts
  -KLRDgtNht0iSB6RUGGz
    - author: "author 1"
    - title: "some post"
    - detail: "blah blah"
  -HGze53Sd4RRpFikdIKD
    - author: "author 2"
    - title: "great post"
    - detail: "blah blah blah blah"

我正在使用的Firebase版本是:

compile 'com.firebaseui:firebase-ui-database:0.4.0'
compile 'com.google.firebase:firebase-database:9.0.2'

2 个答案:

答案 0 :(得分:1)

我明白了。为了找到一个特定的节点,在我的例子中是最新的帖子(根据我问题上显示的给定数据结构显示为Post对象),我必须使用alter table notebooks modify comments text CHARACTER SET utf8 COLLATE utf8_general_ci; 来获取Firebase DataSnapshot,然后从那里我可以循环遍历子节点以找到我想要的内容。

addListenerForSingleValueEvent

答案 1 :(得分:0)

使用适配器,您可以这样做:

if (mAdapter.getItemCount() > 0) {
    final Post = mAdapter.getItem(0);
}

您可以在此处找到FirebaseRecyclerAdapter的来源:https://github.com/firebase/FirebaseUI-Android/blob/master/database/src/main/java/com/firebase/ui/database/FirebaseRecyclerAdapter.java