有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从firebase实时数据库中获取字符串数组

Firebase Realtime database structure

databaseReference = FirebaseDatabase.getInstance().getReference("/sample");

databaseReference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        Log.d(TAG, "onDataChange: dataSnapshot "+dataSnapshot.getValue());
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
});

我对安卓应用程序开发和firebase也是新手。我正在从样本节点获取数据,并获得如下所示的DataSnapshot值

{size=[Small, Large, Ex-Large], type=[Type 1, Type 2], color=[Red, Green, Blue], category=[T-Shirt, Jeans, Sweater]}

如果需要帮助,任何建议都将不胜感激

谢谢


共 (2) 个答案

  1. # 1 楼答案

    要单独检索值,可以使用如下代码:

    databaseReference.child("category").addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                       for (int i=0;i<3;i++) {
                         // category is an ArrayList you can declare above
                            category.add(dataSnapshot.child(String.valueOf(i)).getValue(String.class));
    
                    }
    
                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) { // Do something for this
    
                    }
                });
    

    类似地,您可以在其他ArrayList中添加其他节点的值,只需在代码中更改Childs的值

  2. # 2 楼答案

    FirebaseDatabase database = FirebaseDatabase.getInstance();     
        
        DatabaseReference refence = database.getReference();
        
    
    
        refence.addValueEventListener(new ValueEventListener()
                {
    
                    @Override
                    public void onDataChange(DataSnapshot snapshot) {
                        // TODO Auto-generated method stub
                        
                        ArrayList array= new ArrayList<>();
                        
                        
                           for (DataSnapshot ds : snapshot.getChildren()){
                                
                               String data = ds.getValue().toString();
                               
                                array.add(data);
                                                            
                             
                                
                               
    
                                
                            }
    
                           System.out.println(array); 
                        
                    }
    
                    @Override
                    public void onCancelled(DatabaseError error) {
                        // TODO Auto-generated method stub
                        
                    }
            
                });
            
    

    在我的例子中String.class不起作用,相反.toString方法起作用

    String data = ds.getValue().toString();