簡體   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