尝试使用Firebase Realtime数据库中的数据填充我的微调器,但微调器为空

时间:2019-09-02 01:30:13

标签: android firebase firebase-realtime-database android-spinner

我正在尝试创建一个微调器,其中填充了我在Firebase实时数据库中创建的选项。但是,微调器始终显示空白值。所有代码都能正确编译并运行,但是我认为将适配器应用于微调器的方式有问题。谁能看到代码的问题所在?

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";

private FirebaseDatabase mFirebaseDatabase;
private DatabaseReference mDatabase;
private ChildEventListener mChildEventListener;
private DatabaseReference mDatabaseReference;

private Spinner mLeaseSpinner;

private List<String> areas  = new ArrayList<String>();
private ArrayAdapter<String> dataAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mLeaseSpinner = (Spinner) findViewById(R.id.LeaseSpinner);
    mMessageListView = (ListView) findViewById(R.id.messageListView);

    mDatabaseReference = FirebaseDatabase.getInstance().getReference();

    mDatabaseReference.child("areas").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot areaSnapshot: dataSnapshot.getChildren()) {
                String areaName = areaSnapshot.child("areaName").getValue(String.class);
                areas.add(areaName);
            }
            Spinner mSpinner = (Spinner)findViewById(R.id.LeaseSpinner);
            dataAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, areas);
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            mSpinner.setAdapter(dataAdapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }

    });

}

这是我的数据库的样子:

1 个答案:

答案 0 :(得分:0)

问题是此mDatabaseReference.child("areas")缺少像child(number)这样的mDatabaseReference.child("areas").child(number).addValueEvent

插入时,您可以使用唯一键而不是数字,以便您可以使用查询

 mDatabaseReference.child("areas").push().setValue(yourValue);
//push means create an unique Key

如果您想使用自己的方法,可以使用此方法

for(int i=0;i<numberChoices;i++){

 mDatabaseReference.child("areas").child(String.valueOf(numberChoices).addValueEvent`

}