java - 从节点 Firebase-Android 检索所有子节点

标签 java android database firebase

我是 Firebase 新手 我有以下数据库

    -Root
         -IT
            -KOKlB####nryPhkTaA
                    -name: value
                    -location: value
                    -website: value
            -KOKlBBPh###nryPhkTaA
                    -name: value
                    -location: value
                    -website: value
         -Media
            -KOKlBBP##nryPhkTaA
                    -name: value
                    -location: value
                    -website: value
            -KOKlBBPhm##yPhkTaA
                     -name: value
                    -location: value
                    -website: value

这个想法是我想将每个节点的子节点检索到 listView 例如:我有一个 ListView ,每一行包含每个公司的名称、位置和网站。

这就是我推送到数据库的方式

       public class Company {

private String name;
private String location;
private String website;

public Company(){}

public Company(String name,String location, String website)
{
    this.name=name;
    this.location=location;       
    this.website=website;     
}

     public Map<String, Object> toMap()
{
    HashMap<String, Object> result= new HashMap<>();
    result.put("name",name);
    result.put("location",location);
    result.put("website",website);

    return result;
}

     public void addNewCompany(String category,String name,String location, String website)
{
    Company company= new Company(name,location,city,website);
    String key= mRootRef.child("0").child(category).push().getKey();
    Map<String, Object> companyValues=company.toMap();

    Map<String, Object> childUpdates=new HashMap<>();
    childUpdates.put("0/"+category+"/" + key,companyValues);

    mRootRef.updateChildren(childUpdates);

}

我如何尝试检索

         DatabaseReference mConditionRef=mRootRef.child(category);
        mConditionRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                for (DataSnapshot dsp : dataSnapshot.getChildren()) {
                CoLists.add(String.valueOf(dsp.getValue()));

                for(String data:CoLists){
                    mCompanies.add(data);
}

但是此检索列表包含类别根内的全部数据。我希望它是 Company 对象的列表。

谢谢

最佳答案

您可以使用DataSnapshot的.getKey或.getValue()函数获取所需的数据。

关于java - 从节点 Firebase-Android 检索所有子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38776356/

相关文章:

java - 为什么我的 AES 加密会引发 InvalidKeyException?

java - Spring 请求映射 - 将所有 GET 请求映射到唯一端点

database - 如何在 Dropwizard 项目(Angular 7 前端)中创建并开始使用嵌入式 Apache Derby 数据库

database - 如何维护生产和开发者数据库?

android - RecyclerView 滚动到添加新项目时的位置

SQL 查询从一个表中获取其他 3 个表中不存在的行

java - Android UI 以编程方式在 GridLayout 位置

java - Spring批处理不将作业实例插入数据库

Android:如何在普通类(class)内获得给定 Activity 的 View ?

java - LibGdx android 访问 .txt 文件并将其转换为字符串