你好,我有一个问题已经尝试了很长时间,但是没有成功。
我正在创建一个whatsapp风格的APP。因此,我希望它显示在“用户片段”中,该联系人保存在用户的手机联系人列表中。为此,我在数据库( phoneNumberWithoutCountryCode )中创建了一个引用,该引用将获取每个用户的手机号码,然后将其与联系人列表进行比较。
我提供的代码显示了所有注册用户,这是我想更改的内容。
由于目前缺乏足够的知识,我坚持这样做。
感谢您的帮助。
我的Firebase数据库:
- 用户是存储每个用户的所有个人信息的行。
- 然后是代表每个用户的用户ID 的行。
- 然后是用户信息(很明显,但是我没有输入它,因为我认为它不重要)。
- 名称是应在“用户片段”中显示的用户名。这与联系人列表中联系人的姓名不同。
- phoneNumberWithoutCountryCode 是您首次使用手机号码登录时从EditText获得的非国家/地区代码手机号码。
- uid 是用户ID。
{
"Users" : {
"Bakpv8gs6keE95nFrRz4jnXOqka2" : {
"name" : "User 1","phoneNumberWithoutCountryCode" : "123789456","uid" : "Bakpv8gs6keE95nFrRz4jnXOqka2"
},"ET2PD26FpweYHIdPYtdlF1KDQEZ2" : {
"name" : "User 2","phoneNumberWithoutCountryCode" : "987654321","uid" : "ET2PD26FpweYHIdPYtdlF1KDQEZ2"
},"JGqx9sZ6nZoamaQmpruuxowvsps1" : {
"name" : "User 3","phoneNumberWithoutCountryCode" : "123456789","uid" : "JGqx9sZ6nZoamaQmpruuxowvsps1"
}
}
}
这是我的用户片段中需要更改的代码:
private void getallUsers() {
//get current user
final FirebaseUser fUser = FirebaseAuth.getInstance().getcurrentUser();
//get path of database named ""Users" containing users info
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users");
//get all data from path
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull Datasnapshot datasnapshot) {
userList.clear();
for (Datasnapshot ds:datasnapshot.getchildren()){
ModelUser modelUser = ds.getvalue(ModelUser.class);
//get all users except currently signed in user
if (!modelUser.getUid().equals(fUser.getUid())){
userList.add(modelUser);
}
//adapter
adapterUsers = new AdapterUsers(getactivity(),userList);
//set adapter to recycler view
recyclerView.setadapter(adapterUsers);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
用户片段如下: Screenshot