【问题标题】:How to retrieve all the data from Firebase and put it on a RecyclerView如何从 Firebase 检索所有数据并将其放在 RecyclerView
【发布时间】:2017-03-01 23:59:13
【问题描述】:

这是我的数据库结构

我想从孩子Passenger 中检索所有数据并将其放入RecyclerView...这怎么可能?

【问题讨论】:

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


    【解决方案1】:

    您可以使用FirebaseUI for Android 库。

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

    dependencies {
        // Single target that includes all FirebaseUI libraries
        compile 'com.firebaseui:firebase-ui:0.5.3'
    }
    

    定义你的DatabaseReference

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

    然后:

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

    ViewHolder 类:

    public static class PassengerHolder extends RecyclerView.ViewHolder {
    
    }
    

    FirebaseRecyclerAdapter 类:

    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);
    

    【讨论】:

    • 我也想用CardView先生。这怎么可能?
    • @tin 在您的布局文件(由 R.layout.mylayout 引用)中只包含一个 CardView。
    • 嗨,@GabrieleMariotti 我的申请也遇到了同样的问题。我似乎无法读取所有数据,而是我的应用程序仅从第一个节点/用户读取数据。请你帮忙,我试过你在这里做什么,但我的结构有点不同,我似乎无法让它工作:stackoverflow.com/questions/41797009/…
    【解决方案2】:

    你可以这样试试:

         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)添加到您的数组列表中并显示在您的列表中

    More Info 1

    【讨论】:

      猜你喜欢
      • 2018-01-24
      • 2020-05-09
      • 2022-01-24
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      相关资源
      最近更新 更多