Android 如何从Firebase检索所有数据并将其放在RecyclerView上

Android 如何从Firebase检索所有数据并将其放在RecyclerView上,android,firebase,firebase-realtime-database,android-recyclerview,firebaseui,Android,Firebase,Firebase Realtime Database,Android Recyclerview,Firebaseui,这是我的数据库结构 我想从儿童乘客中检索所有数据,并将其放入回收视图…这怎么可能?您可以使用该库 只需添加依赖项(0.5.3适用于firebase 9.4.0库): 定义您的数据库参考: FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference ref = database.getReference("passengers"); 然后: 创建自定义的ViewHolder类 创建自定义子类Fire

这是我的数据库结构

我想从儿童
乘客
中检索所有数据,并将其放入
回收视图
…这怎么可能?

您可以使用该库

只需添加依赖项(0.5.3适用于firebase 9.4.0库):

定义您的
数据库参考

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("passengers");
然后:

  • 创建自定义的
    ViewHolder
  • 创建自定义子类
    FirebaseRecyclerAdapter
ViewHolder
类:

public static class PassengerHolder extends RecyclerView.ViewHolder {

}
RecyclerView recycler = (RecyclerView) findViewById(R.id.messages_recycler);
recycler.setHasFixedSize(true);
recycler.setLayoutManager(new LinearLayoutManager(this));

mAdapter = new FirebaseRecyclerAdapter<Passenger, PassengerHolder>(Passenger.class, R.layout.mylayout, PassengerHolder.class, mRef) {
    @Override
    public void populateViewHolder(PassengerHolder passengerViewHolder, Passenger passenger, int position) {
        passengerViewHolder.setName(passenger.getName());
        //.......

    }
};
recycler.setAdapter(mAdapter);
FirebaseRecyclerAdapter
类:

public static class PassengerHolder extends RecyclerView.ViewHolder {

}
RecyclerView recycler = (RecyclerView) findViewById(R.id.messages_recycler);
recycler.setHasFixedSize(true);
recycler.setLayoutManager(new LinearLayoutManager(this));

mAdapter = new FirebaseRecyclerAdapter<Passenger, PassengerHolder>(Passenger.class, R.layout.mylayout, PassengerHolder.class, mRef) {
    @Override
    public void populateViewHolder(PassengerHolder passengerViewHolder, Passenger passenger, int position) {
        passengerViewHolder.setName(passenger.getName());
        //.......

    }
};
recycler.setAdapter(mAdapter);
RecyclerView recycler=(RecyclerView)findViewById(R.id.messages\u recycler);
回收商。setHasFixedSize(真);
回收商。setLayoutManager(新的LinearLayoutManager(本));
mAdapter=新的FirebaseRecyclerAdapter(passer.class、R.layout.mylayout、PassengerHolder.class、mRef){
@凌驾
公共无效人群视图持有人(乘客座乘客座乘客座乘客座乘客座乘客座乘客座内部位置){
setName(passenger.getName());
//.......
}
};
回收商。setAdapter(mAdapter);

您可以这样尝试:

     FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference ref = database.getReference();

        ref.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                   //Your Logic here
                    for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) {
                    YourModel mModel = eventSnapshot.getValue(YourModel.class);
                    Log.e("DATA" ,""+ mModel);   
                  }  
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
您必须为您的
Recycleview
创建一个数组列表,并将每个模型即
mModel
添加到您的数组列表中并显示在列表中


我还想使用
cardwiew
sir。怎么可能?@tin在你的布局文件中(被R.layout.mylayout引用)只包含一个CardView。嗨,@GabrieleMariotti我的应用程序也有同样的问题。我似乎无法读取所有数据,而我的应用程序只读取第一个节点/用户的数据。请你帮忙,我试过你在这里做什么,但我的结构有点不同,我似乎无法让它工作: