从Firebase检索推送的数组

时间:2019-05-13 15:59:48

标签: android firebase firebase-realtime-database

我在项目中使用的是firbase,对它还很陌生。 我将用户联系人存储在用户ID下,这些联系人由用户选择,然后将它们推入数据库,因此用户每次可以添加多个联系人,而不会覆盖之前已经添加的现有联系人。我先将联系人添加到列表中,然后再推送它们,因此结果如下所示:

 -OHffwMv2yiQKxZGOLVSkk3KZwlD3 //user_id 
  {

   -UserContacts{
       -LelbfUUJ2Kmy-sOrOF_{
          -0{
            phone_number: "phone number user added"}
                }
        -1{
           phone_number: "phone number user added"  }
      -LelDGHq8EkNbHN54qqS{
          -0{
             phone_number: "another phone number"   } 

                    }
         }
      age: " "
     email: "xxx@gmail.com"
    images: ""
    phone: "+xxxxxxxx"
     username: "xxx"            
    }

问题是,我想从数据库中检索这些电话号码,我已经尝试了很多方法,但是我只是遇到转换错误或为空。

我尝试过:

 FirebaseDatabase db;

DatabaseReference userdata;
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userid;



db = FirebaseDatabase.getInstance();

userdata= db.getReference("users");

    userid= user.getUid();


 userdata.child(userid).
child("UserContacts").
 addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {


            for (DataSnapshot ds: dataSnapshot.getChildren()){

                ArrayList<String> contactlist= 
   (ArrayList<String>)ds.getValue();

                String a= contactlist.get(0).toString();
   Log.d(TAG,a);



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

        }
    });

这里什么也没回来

我也尝试使用哈希映射而不是ArrayList

  HashMap<String,String> contactlist(HashMap<String,String>)ds.getValue();

 String a = contactlist.get("phone_number");

我在这里遇到转换错误。 这就是我用来推送联系人的代码。

     Ref1.child(userId).child("UserContacts").push().setValue(c);

其中Ref1指向用户数据库,c指向包含我选择的联系人数量的列表

       ArrayList<Contacts> c= new ArrayList<>();
       ...//here there is a for loop to read through the returned list of 
       //contacts
       Contacts contact= new contact(selected_number);
        c.add(contact);


       //end of for Loop


       Ref1.child(userId).child("UserContacts").push().setValue(c);

请帮助我获取一个字符串列表,其中包含存储在数据库中UserContacts下的电话号码。

0 个答案:

没有答案