繁体   English   中英

Android Spinner中的Firebase数据

[英]Firebase Data in Android Spinner

这是前一篇文章的后续内容,我仍然有一些问题-请参阅此处的原始文章: 使用Firebase Data填充Android Spinner

我已对Firebase规则进行了修改,以便为每个用户实现基于用户的身份验证。 我已经成功地实现这一点,但是,一个问题仍然存在-在我的微调MaintenanceActivity不再与填充propertyAddress属性,它是从properties在我的数据库节点。

我当前的安全性设置非常适合添加,删除和更新记录,但是,似乎没有使用propertyAddress填充微调器。

这是我的安全规则:

    {
  "rules": {
    "maintenance" : {
      "$uid" : {
    ".read": "$uid === auth.uid",
    ".write": "$uid === auth.uid"
  }
},
    "properties" : {
     "$uid" : {
    ".read": "$uid === auth.uid",
    ".write": "$uid === auth.uid"
    }
}
}
}

我希望从MaintenanceActivity中提取代码,我希望该代码可以填充微调器:

fDatabaseRoot.child("properties").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                final List<String> propertyAddressList = new ArrayList<String>();

                for (DataSnapshot addressSnapshot: dataSnapshot.getChildren()) {
                    String propertyAddress = addressSnapshot.child("propertyAddress").getValue(String.class);
                    if (propertyAddress!=null){
                        propertyAddressList.add(propertyAddress);
                    }
                }

                Spinner spinnerProperty = (Spinner) findViewById(R.id.spinnerProperty);
                ArrayAdapter<String> addressAdapter = new ArrayAdapter<String>(MaintenanceActivity.this, android.R.layout.simple_spinner_item, propertyAddressList);
                addressAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinnerProperty.setAdapter(addressAdapter);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

为了进一步说明,这是我的数据结构

数据结构

properties节点下,您有两个ID,第一个是userid ,第二个是push()方法生成的随机ID。

为了能够访问属性地址,您需要获取userid ,然后使用for(DataSnapshot addressSnapshot: dataSnapshot.getChildren()) {您将在随机ID中进行迭代并在此处获取属性。

所以改变这个:

fDatabaseRoot.child("properties").addListenerForSingleValueEvent(new ValueEventListener() {

对此:

FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
String userid=user.getUid();
fDatabaseRoot.child("properties").child(userid).addListenerForSingleValueEvent(new ValueEventListener() {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM