如何构造我的对象以检索嵌套的 FireBase 数据

Posted

技术标签:

【中文标题】如何构造我的对象以检索嵌套的 FireBase 数据【英文标题】:How to structure my Object to retrieve nested FireBase data 【发布时间】:2017-07-09 19:10:57 【问题描述】:

我希望我的应用程序(iosandroid)显示一些新闻提要,并且此新闻提要可能包括文本和 1 张图片(要显示在图像视图中)或文本和多张图片未指定 NO。 (在gridview中显示)根据对象类型属性。

我已经尝试像下面那样实现这个功能,但它不起作用,我希望有人能解决这个问题,我检查了很多问题,但我认为不符合我的情况。

她是我的 firebase 数据结构和我的 android 对象:

public class object 

    String text;
    String type;
    List<images> images;
    public object()

    
    public String gettext()return text;
    public  String gettype()return type;
    public List<images> getimages()return images;


class images

    String images;
    public images()

    
public String getimages()return images;


和检索活动:

public class MainActivity extends AppCompatActivity 
    DatabaseReference database;
    List<object> objectsList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        database = FirebaseDatabase.getInstance().getReference();
        loaddata();
    

    private void loaddata()
        Query query = database.child("news");
        query.addValueEventListener(new ValueEventListener() 
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) 
                if (objectsList!=null)
                    objectsList.clear();
                
                for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren())
                    object object = dataSnapshot1.getValue(object.class);
                    Log.i("&&&&&&& Images &&&&&",object.gettext());
                    objectsList.add(object);

                
            

            @Override
            public void onCancelled(DatabaseError databaseError) 
                Log.e("%%%%%%%% ERROR ",databaseError.getMessage());
            
        );


  

任何建议将不胜感激

【问题讨论】:

【参考方案1】:

尝试更改images,如下所示。

public class object  

    String text;
    String type;
    Map<String, String> images;
    public object() 

     
    public String gettext()return text;
    public  String gettype()return type;
    public Map<String,String> getimages()return images;
 

【讨论】:

刚刚注意到我没有在下面的代码中更新getimages(刚刚做了)......假设你可能做了那个改变?你能添加你看到的完整错误吗 在反序列化时需要一个 Map,但在尝试检索快照时得到了一个类 java.util.ArrayList ... object object = dataSnapshot1.getValue(object.class);

以上是关于如何构造我的对象以检索嵌套的 FireBase 数据的主要内容,如果未能解决你的问题,请参考以下文章

从 ArrayList 中的 Firebase 检索数据以获取图形

如何使用顺序 ID 从 Firebase 检索随机对象?

检索 Firebase 快照导致加载验证错误

使用 Swift 遍历 Firebase 中的嵌套快照子项

使用嵌套地图检索数据并将其保存到 Firebase - Flutter [关闭]

如何通过键值从firebase中检索对象