[英]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.