Итак, теперь я пытаюсь отобразить мои контакты, которые существуют только в таблице «Users» базы данных firebase,
Итак, первый шаг - получить все мои контакты (все было сделано идеально менее чем за одну секунду) а второй - получить всех пользователей в моей базе данных уже для сравнения двух списков Arraylists, чтобы проверить, существует ли какой-либо из моих контактов в базе данных или нет, если существует, то отобразить их (на самом деле это сценарий)
и я уже сделал это, но это слишком медленный алгоритм, я уверен на 100%! ,
, если в базе данных два миллиона пользователей, а у меня 1000 контактов, то 1000 * 2 000 000 !! Потребуется вечность, чтобы отобразить мои контакты, которые существуют только в базе данных Firebase,
Есть ли какое-нибудь решение?
Вот мой код
`
// this means it will load the whole users from database !
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("Users");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
contactsList.clear();
// this algorithm means that if there is one million records it will loop through
//all of them
// then add all of them to the list
// takes lots of time actually :(
for(DataSnapshot snapshot : dataSnapshot.getChildren()){
User user = snapshot.getValue(User.class);
for(Contacts contacts : PhonecontactsList){
// if this user phone eqauals the phone we saved in the phone array list
if(user.getPhone().equals(contacts.getPhone())){
// if the user doesn't exist in the list
if (!contactsList.contains(user)) {
// add them
contactsList.add(new User(
user.getId(),
contacts.getUsername(),
user.imageURL,
user.getStatus(),
user.getPhone(),
user.getTyping_to(),
user.getSearch(),
user.getTimestamp()
));
}
}
}
}
UsersAdapter usersAdapter = new UsersAdapter(getContext(), contactsList , false);
contactsRecycler.setAdapter(usersAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
`
Заранее спасибо!