如何在微调器内部显示Firebase中的数据以进行过滤,而又没有相同的数据?

时间:2018-10-30 06:42:51

标签: android firebase firebase-realtime-database

我想在我的应用程序中创建一种过滤方法。因此,我想显示微调器内部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 :(得分:1)

您可以使用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);
    // ...
}