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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Firebase实时数据库读取Android数据并在RecyclerView上显示相关的知识,希望对你有一定的参考价值。

我已成功地使用databaseIngredients.child(StringId).setValue(ingredients);在Firebase的RTD中保存数据其中“ingredients”是从EditText获取的String,StringId是“push”方法的唯一ID。我已经参考了许多教程,但我无法阅读它,我希望每次使用新数据更新数据库时都要更新我的RecyclerView。我只想使用recyclerView在我的数据库中显示所有数据。我不理解ValueEventListener方法。请耐心等待,因为我理解Firebase的新回复。

答案

阅读数据非常简单,你需要做的就是在你提供的set a listener中听change in valuedatabase reference

为此目的有两个听众,

  • 一次性监听器(addListenerForSingleValueEvent),只有在您发出请求后才会读取数据。为了这,

DatabaseReference reference = 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();
    }
});
  • 连续数据侦听器(addValueEventListener),用于在服务器每次更改时获取数据 DatabaseReference reference = 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(); } });
另一答案

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

Here's the official documentation

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

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

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

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

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

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

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