java - 如何将电话联系人号码与 Firebase 注册号码进行比较?

标签 java android firebase firebase-realtime-database android-adapter

我试图在 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/

相关文章:

ios - 使用 Firestore 中的数据填充 TableView

android - 如何制作firebase实时数据库用户的私有(private)节点?

java - "xx free bytes and xx until OOM"是什么意思?

java - 在 jxl 中写入 Excel

Android IAB 错误 - 需要身份验证

android - RecyclerView - 获取所有现有的 View / View 持有者

Firebase 函数 - 生成和托管静态网页

java - 在 Java 中,什么时候 "do while"循环是唯一的选择?

java - 如何用 Java 编译 .java 文件?

java - Android OpenGL ES 正交奇怪的长宽比