Как отобразить данные из Firebase внутри спиннера для метода фильтрации, не имея одинаковых данных? - PullRequest
0 голосов
/ 30 октября 2018

Я хочу сделать метод фильтрации в моем приложении. Итак, я хочу отобразить весь город из базы данных Firebase внутри моего счетчика без отображения того же города. Для вашей информации, город находится в поле EditText.

Моя кодировка: -

private void loadFireBaseDataList(final String referenceKey)
{
    databaseReference = FirebaseDatabase.getInstance().getReference(referenceKey);
    databaseReference.addValueEventListener(new ValueEventListener()
    {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot)
        {
            final List<String> identity2 = new ArrayList<String>();
            identity2.add(0, "Location");

            for (DataSnapshot snapshot : dataSnapshot.getChildren())
            {
                for (DataSnapshot dataSnapshot2 : snapshot.getChildren())
                {
                    identity2.add(dataSnapshot2.child("adstuitioncity").getValue(String.class));
                }
            }

            ArrayAdapter<String> nameAdapter2 = new ArrayAdapter<String>(FilterTuitionCentre.this, android.R.layout.simple_spinner_item, identity2);
            nameAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spLocation.setAdapter(nameAdapter2);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

Моя база данных: -

enter image description here

Мой интерфейс вывода: - enter image description here

1 Ответ

0 голосов
/ 30 октября 2018

Вы можете использовать Set<String>, который не содержит дубликатов:

@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

    Set<String> cities = new HashSet<String>();

    for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
        // ...
        cities.add(value)
    }

    List<String> identity2 = new ArrayList<String>(cities);
    identity2.add(0, "Location") 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(FilterTuitionCentre.this, android.R.layout.simple_spinner_item, identity2);
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...