簡體   English   中英

如何從Firebase數據庫檢索數據並顯示在自定義列表視圖中?

[英]How do I retrieve data from firebase database and show in custom listview?

我已將用戶發布詳細信息存儲在firebase數據庫中USERID下的“發布”節點中,相應地以增量順序存儲為Post1,Post2,依此類推。 現在,我想按降序依次檢索Post節點內的所有數據,如Post2,Post1,並在自定義列表視圖中顯示。 對於檢索單個發布節點數據,它可以正常工作,但不能用於檢索多個/所有發布節點。 這是我的Firebase數據庫映像: 圖片

為了顯示我嘗試過的所有帖子:

dataref1.addValueEventListener(new 
com.google.firebase.database.ValueEventListener() {
        @Override
        public void onDataChange(com.google.firebase.database.DataSnapshot 
dataSnapshot) {

            list.clear();
            for(com.google.firebase.database.DataSnapshot dataSnap : 
dataSnapshot.getChildren())
            {

                for(com.google.firebase.database.DataSnapshot datas : 
dataSnap.getChildren()) {

                    DataModel datamodel = 
dataSnap.getValue(DataModel.class);
                    list.add(datamodel);
                }
            }

            CustomAdapter adapter = new CustomAdapter(Home.this,list);
            listView.setAdapter(adapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

它只是在自定義列表視圖中顯示用戶名。 圖片

我檢查了許多教程,但沒有找到解決方案。 請幫我。

謝謝 :)

要顯示這些帖子,您需要更改一下Firebase數據庫。 目前,您所有的帖子都嵌套在uid 您需要添加另一個名為posts節點,它是uid的直接子節點,您需要在其中單獨添加所有這些節點。 您的數據庫應如下所示:

Firebase-root
     |
     ---- city: "City Name"
     |
     ---- email: "name@email.com"
     |
     ---- //and so on
     |
     ---- posts
           |
           ---- post1
           |
           ---- post2
           |
           ---- post3
           |
           //and so on

要瀏覽這些帖子,請使用以下代碼:

//get the uid
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
    String uid = firebaseUser.getUid();
}

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference postsRef = rootRef.child(uid).child("posts");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String description = ds.child("description").getValue(String.class);
            String dateTime = ds.child("dateTime").getValue(String.class);
            String posturi = ds.child("posturi").getValue(String.class);
            String severity = ds.child("severity").getValue(String.class);
            Log.d("TAG", description + " / " + dateTime + " / " + posturi + " / " + severity);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
yourRef.addListenerForSingleValueEvent(eventListener);

FirebaseUI庫使它非常容易。 允許您使用FirebaseRecyclerAdapter填充RecyclerView

這里的官方指南

FirebaseUI

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM