首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据firebase-realtime-database中存在的特定值在android studio中显示数据列表?

如何根据firebase-realtime-database中存在的特定值在android studio中显示数据列表?
EN

Stack Overflow用户
提问于 2020-10-03 15:35:36
回答 1查看 42关注 0票数 0

因此,我尝试检索选择了特定值的用户列表。

这是我在Firebase中创建的数据库。我正在尝试打印在"providedServices“节点中选择了”食物“选项的用户及其地址的列表。

Firebase Database

我遍历数据库并尝试使用if语句来查找选择该选项的用户,但是,我被卡住了。下面是我的代码片段:

Code

有人能帮帮我吗?顺便说一句,我是个初学者,所以请对我手下留情:')

下面是FoodActivity页面,其中

代码语言:javascript
复制
public class FoodActivity extends AppCompatActivity {

    DatabaseReference databaseDonors;

    ListView listViewDonors;

    List<Donors> donorsList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_food);

        listViewDonors = (ListView) findViewById(R.id.listViewDonors);

        donorsList = new ArrayList<>();

    }

    public FoodActivity() {
    }

    @Override
    protected void onStart() {
        super.onStart();

        DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
        DatabaseReference donorsRef = rootRef.child("donors");
        Query provideServicesQuery = donorsRef.orderByChild("provideServices").equalTo("Food");
        ValueEventListener valueEventListener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for(DataSnapshot ds : dataSnapshot.getChildren()) {
                    Donors donors = ds.getValue(Donors.class);
                    donorsList.add(donors);
                    Log.d("TAG", donors.getDonorName());
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
            }
        };
        provideServicesQuery.addListenerForSingleValueEvent(valueEventListener);
        
    }
}

下面是使用的捐赠者类。

代码语言:javascript
复制
public class Donors {
    String donorID;
    String donorName;
    String providedServices;
    String donorBusinessName;
    String donorAddress;
    String donorEmail;
    String donorPhone;


    public Donors(String donorID, String donorName, String providedServices, String donorBusinessName, String donorAddress, String donorEmail, String donorPhone) {
        this.donorID = donorID;
        this.donorName = donorName;
        this.providedServices = providedServices;
        this.donorBusinessName = donorBusinessName;
        this.donorAddress = donorAddress;
        this.donorEmail = donorEmail;
        this.donorPhone = donorPhone;
    }

    public Donors() {
    }

    public String getDonorID() {

        return donorID;
    }

    public String getDonorName() {

        return donorName;
    }

    public String getProvidedServices() {

        return providedServices;
    }

    public String getDonorBusinessName() {

        return donorBusinessName;
    }

    public String getDonorAddress() {

        return donorAddress;
    }

    public String getDonorEmail() {

        return donorEmail;
    }

    public String getDonorPhone() {

        return donorPhone;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-10-03 17:59:53

要只获取provideServices属性设置为“食物”的对象,您绝对应该使用以下代码行中的查询:

代码语言:javascript
复制
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference donorsRef = rootRef.child("donors");
Query provideServicesQuery = donorsRef.orderByChild("provideServices").equalTo("Food");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            Donors donors = ds.getValue(Donors.class);
            donorsList.add(donors);
            Log.d("TAG", donors.getDonorName());
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
    }
};
provideServicesQuery.addListenerForSingleValueEvent(valueEventListener);

除了将使用Donors对象填充donorsList之外,您还将在logcat中看到所有将provideServices属性设置为“Donors”的捐赠者的姓名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64181821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档