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