Android-从Firebase实时数据库读取数据并显示在RecyclerView上

Posted

技术标签:

【中文标题】Android-从Firebase实时数据库读取数据并显示在RecyclerView上【英文标题】:Android-Read Data From Firebase Real Time Database and Displaying on RecyclerView 【发布时间】:2018-11-15 04:26:00 【问题描述】:

我已成功使用 Firebase 的 RTD 保存数据 databaseIngredients.child(StringId).setValue(ingredients); 其中“成分”是从 EditText 获取的字符串,而 StringId 是“推送”方法的唯一 ID。我已经参考了很多教程,但我无法阅读它,我想在每次使用新数据更新我的数据库时更新我的​​ RecyclerView。我只想使用 recyclerView 显示我的数据库中的所有数据。我不理解 ValueEventListener 方法。请耐心等待我的回复,Firebase 新手。

【问题讨论】:

This 是一种推荐的方式,您可以通过这种方式从 Firebase 实时数据库中检索数据并使用 FirebaseRecyclerAdapter 将其显示在 RecyclerView 中。 谢谢,问题已解决 【参考方案1】:

读取数据非常简单,您只需set a listener 监听您提供的database reference 中的change in value

为此目的有两个监听器,

One Time Listener(addListenerForSingleValueEvent),仅在您发出请求后读取数据。为此,

DatabaseReference 参考 = database.getReference("Database").child(StringId).setValue(ingredients);

reference.addListenerForSingleValueEvent(new ValueEventListener() 
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) 
        if(dataSnapShot.exists())
            //update recyclerview or do anything with your data
        
    

    @Override
    public void onCancelled(DatabaseError databaseError) 
        Toast.makeText(getApplicationContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
    
);

Continuous Data Listener(addValueEventListener),用于在服务器每次发生变化时获取数据

DatabaseReference 参考 = database.getReference("Database").child(StringId).setValue(ingredients);

    reference.addValueEventListener(new ValueEventListener() 
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) 
            if(dataSnapShot.exists())
                //update recyclerview or do anything with your data
            
        

        @Override
        public void onCancelled(DatabaseError databaseError) 
            Toast.makeText(getApplicationContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
        
    );

【讨论】:

感谢您的详细帮助,但我将如何在 RecyclerView 中显示我的数据? 这也很简单。有很多方法可以做到这一点。这个简单的例子会帮助你。 :) android-examples.com/…【参考方案2】:

您可以使用 FirebaseRecyclerAdapter 。您将需要一个模型类和一个 ViewHolder 类。 如果您使用的是新版本的firebase-ui,那么您必须使用 FirebaseRecyclerOptions 和 FirebaseRecyclerAdapter

Here's the official documentation

【讨论】:

以上是关于Android-从Firebase实时数据库读取数据并显示在RecyclerView上的主要内容,如果未能解决你的问题,请参考以下文章

读取 longlat 数据实时 Firebase 和实现以映射 Android Studio

适用于 Android 的 Firebase 实时(在线)数据库的安全性如何?

无法读取或写入 firebase 实时数据库(android studio)

无法读取或写入firebase实时数据库(android studio)。

使用颤振从 Firebase 实时数据库中读取子节点的数量

从 Google Firebase 实时数据库读取 google maps 标记数据时出现问题