首先,我想向您展示我的Firebase数据库树
-Users
|
----959670000
| |
| ------name
|
+ ----750890000
+------859200000
我有一个以孩子为用户的根节点。每当新用户注册时,它都会获得新的唯一标识...而唯一标识是电话号码。现在在我的Android应用程序中,我检索所有联系人,即我的手机号码中的电话号码。我想要的是将我的联系人中的每个电话号码与firebase数据库中的电话号码进行比较,以便我知道我的联系人中的哪个用户已经注册。
所有我想问的是如何在我的问题中实现大胆的部分请帮助我....我过去4天非常沮丧并试图实现。 无论如何还要提前......: - )
答案 0 :(得分:0)
public boolean getAllUserList(final ArrayList<ContactPojo> contactList){//all contact list as an argument
databaseReference();
for (int i = 0; i < contactList.size(); i++) {
checkingMatchedData(contactList.get(i).getPhone(),contactList.get(i));
}
return false;
}
public void checkingMatchedData(String phone, final ContactPojo contPojo){
Query query=reference.orderByChild("phone").equalTo(Long.parseLong(phone));
ValueEventListener listener=new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue()!=null) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
UserPojo pojo = snapshot.getValue(UserPojo.class);
ContactPojo contactPojo = new ContactPojo();
contactPojo.setName(pojo.getName());
contactPojo.setPhone(String.valueOf(pojo.getPhone()));
contactPojo.setPhoto_uri(pojo.getImageUrl());
contactPojo.setUserId(pojo.getUserId());
contactPojo.setTypeOfData(101);//this is used to define type of user i.e 101 for registered user or 100 for unregistered
finalUserList.add(contactPojo);
}
}else {
contPojo.setTypeOfData(100);
finalUserList.add(contPojo);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
query.addListenerForSingleValueEvent(listener);
}
public void databaseReference(){
reference= FirebaseDatabase.getInstance().getReference().child("Users");
}