来自电话簿的联系人姓名和来自 Firebase 的号码
Contactnames from Phonebook with numbers from Firebase
在我的应用程序中,我使用 Firebase 检索用户的手机号码。因此我使用这个代码:
databaseUsers.orderByChild("uid").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
users.clear();
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
User contactlists = postSnapshot.getValue(User.class);
users.add(contactlists);
}
ContactList contactAdapter = new ContactList(ContactListActivity.this, users);
listViewContacts.setAdapter(contactAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
现在我有以下问题:如果用户数量很高,是否可以只发送您电话簿中的手机号码?否则我认为到 Firebase 的流量可能不是那么有效?!
另一个机会是单独发送每个号码,但如果用户有很多联系人,这可能会非常复杂。
目前我从服务器获取了所有号码,但我需要过滤正确的联系人并且我需要显示联系人的姓名。
尽可能高效地使用 Firebase 并获取联系人姓名的最佳解决方案是什么?
提前致谢!
你必须:
- 遍历本地 phone 簿以查找每个联系人的 phone 号码。
- 针对每个号码向 Firebase 执行查询。
- 将生成的联系人(如果有)添加到 list/adapter 并更新视图。
假设您已完成第 1 步并获得了 phone 个号码的列表。然后你会循环遍历这些和每个:
for (String phonenumber: phonenumbers) {
Query query = databaseUsers.orderByChild("phonenumber").equalTo(phonenumber);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User contactlists = postSnapshot.getValue(User.class);
users.add(contactlists);
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore erors
}
});
}
调用 notifyDataSetChanged()
确保适配器知道它需要更新视图。
虽然代码有点复杂,但并不像您最初担心的那么慢,因为 。性能主要取决于您在数据库中拥有的用户数量,但最多几十万应该没问题。
在我的应用程序中,我使用 Firebase 检索用户的手机号码。因此我使用这个代码:
databaseUsers.orderByChild("uid").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
users.clear();
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
User contactlists = postSnapshot.getValue(User.class);
users.add(contactlists);
}
ContactList contactAdapter = new ContactList(ContactListActivity.this, users);
listViewContacts.setAdapter(contactAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
现在我有以下问题:如果用户数量很高,是否可以只发送您电话簿中的手机号码?否则我认为到 Firebase 的流量可能不是那么有效?! 另一个机会是单独发送每个号码,但如果用户有很多联系人,这可能会非常复杂。
目前我从服务器获取了所有号码,但我需要过滤正确的联系人并且我需要显示联系人的姓名。
尽可能高效地使用 Firebase 并获取联系人姓名的最佳解决方案是什么?
提前致谢!
你必须:
- 遍历本地 phone 簿以查找每个联系人的 phone 号码。
- 针对每个号码向 Firebase 执行查询。
- 将生成的联系人(如果有)添加到 list/adapter 并更新视图。
假设您已完成第 1 步并获得了 phone 个号码的列表。然后你会循环遍历这些和每个:
for (String phonenumber: phonenumbers) {
Query query = databaseUsers.orderByChild("phonenumber").equalTo(phonenumber);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User contactlists = postSnapshot.getValue(User.class);
users.add(contactlists);
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore erors
}
});
}
调用 notifyDataSetChanged()
确保适配器知道它需要更新视图。
虽然代码有点复杂,但并不像您最初担心的那么慢,因为