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

时间:2018-06-05 15:49:14

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

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

2 个答案:

答案 0 :(得分:0)

阅读数据非常简单,您需要做的就是set a listener在您提供的change in value中监听database 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();
            }
        });
    

答案 1 :(得分:0)

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

Here's the official documentation