我试图在 RecyclerView
中显示电话簿联系人的号码,但只有那些在 Firebase 数据库中注册的联系人号码是关键。
为此,我尝试比较电话簿中的 ArrayList
和 Firebase 数据库中的一个,然后将结果保存在我打算使用的 third ArrayList
中它在 RecyclerViewAdapter
中。
两个问题:
- 我只能在 的监听器中访问 Firebase 数据库数据 引用,因此这些监听器之外的第三个 ArrayList 的大小始终为 0。
- 我无法使用 FirebaseRecyclerAdapter 来显示自定义第三个 数组列表。
那么,我如何比较这些值以获得第三个可访问的 ArrayList?
最佳答案
假设您已经声明了 2 个如下所示的列表:
List<String> phoneBookList = new ArrayList<>();
List<String> finalList = new ArrayList<>();
你有一个看起来像这样的数据库结构:
Firebase-root
|
--- firebaseDatabasePhoneNumbers
|
--- firebaseDatabasePhoneNumberKeyOne
| |
| --- //details
|
--- firebaseDatabasePhoneNumberKeyTwo
|
--- //details
要实现你想要的,请使用下面的代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference firebaseDatabasePhoneNumbersRef = rootRef.child("firebaseDatabasePhoneNumbers");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> firebaseDatabaseList = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String firebaseDatabasePhoneNumber = ds.getKey();
firebaseDatabaseList.add(firebaseDatabasePhoneNumber);
}
for(String phoneBookNumber : phoneBookList) {
if (firebaseDatabaseList.contains(phoneBookNumber)) {
finalList.add(phoneBookNumber);
}
}
//Do what you need to do with the finalList
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
firebaseDatabasePhoneNumbersRef.addListenerForSingleValueEvent(valueEventListener);
关于java - 如何将电话联系人号码与 Firebase 注册号码进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49428852/