我正在尝试创建一个微调器,其中填充了我在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) {
}
});
}
这是我的数据库的样子:
答案 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`
}