Поиск общих данных из базы данных и телефонной книги Firebase - PullRequest
0 голосов
/ 27 июня 2019

Я хочу сравнить телефонные номера, присутствующие в базе данных 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 не дает никакого вывода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...