Я хочу сравнить телефонные номера, присутствующие в базе данных Firebase, с телефонными номерами из моей контактной книги в моем телефоне, чтобы все общие телефонные номера могли быть показаны в моем приложении.Полное описание проблемы было упомянуто в ссылке:
Чтение общих контактов из базы данных Firebase и телефонной книги
Я загрузил телефонные номера Firebase в один ArrayList иномера телефонов из моих контактов в другой ArrayList.Затем реализуем метод retainsall () в двух списках ArrayLists для поиска общих данных.
Код:
public class ShowFirebase extends AppCompatActivity {
ListView ListView;
Button Load;
String phoneNumber;
String name;
DatabaseReference databaseReference;
ArrayList<String> aa = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_firebase);
GetNumber(this.getContentResolver());
ListView = findViewById(R.id.ListView);
Load = findViewById(R.id.Next);
databaseReference =
FirebaseDatabase.getInstance().getReference();
databaseReference =
FirebaseDatabase.getInstance().getReference().child("users");
databaseReference.addValueEventListener(new
ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot
dataSnapshot) {
ArrayList<String> numbers = new ArrayList<>();
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String number =
ds.child("phone").getValue(String.class);
String name =
ds.child("name").getValue(String.class);
numbers.add(number);
}
numbers.retainAll(aa);
ArrayAdapter stringArrayAdapter = new ArrayAdapter<>
(getApplicationContext(), android.R.layout.simple_list_item_1,
numbers);
ListView.setAdapter(stringArrayAdapter);
}
@Override
public void onCancelled(@NonNull DatabaseError
databaseError) {
}
});
}
private void GetNumber(ContentResolver contentResolver) {
Cursor phones =
contentResolver.query(ContactsContract.CommonDataKinds.Phone.
CONTENT_URI, null, null, null,
ContactsContract.Contacts.SORT_KEY_PRIMARY + "
ASC");
while (phones.moveToNext()) {
name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
System.out.println("......." + phoneNumber);
aa.add(name + " " + phoneNumber);
}
}
}
Я ожидаю, что общие телефонные номера с именем, сохраненным в телефонной книге, будут показаны в ListView. Однако Listview не дает никакого вывода