0

我想在我的应用程序中创建一个过滤方法。所以,我想在我的微调器内显示 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) {

        }
    });
}

我的数据库:-

在此处输入图像描述

我的界面输出:- 在此处输入图像描述

4

1 回答 1

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);
    // ...
}
于 2018-10-30T06:49:53.397 回答