我有微调器,我想从firebase添加键值以在微调器列表上设置。我使用下面的代码但不适合我。
我想在微调器中添加键值(2015-16,2016-17,2017-18)。
我的代码在这里无效。
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.child("First").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final List<String> sess = new ArrayList<String>();
for (DataSnapshot areaSnapshot: dataSnapshot.getChildren()) {
String Session = areaSnapshot.getKey();
sess.add(Session);
}
Spinner spinner = (Spinner) findViewById(R.id.spinner3);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(AdminMain.this, android.R.layout.simple_spinner_item, sess);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 0 :(得分:0)
您在JSON树中监听的级别太高了。您的onDataChange()
现在已使用CIVIL
节点触发,而您可能希望将其降低一级。
rootRef.child("First/CIVIL").addValueEventListener(
有一点需要注意:这将加载每个日期下的所有数据,只是为了在微调器中显示该日期。如果这是大量数据,您就会浪费用户的带宽。
在这种情况下,我会考虑扁平化您的数据结构并保留一个单独的节点只包含日期:
"Dates": {
"CIVIL": {
"2015-16": true,
"2016-17": true,
"2017-18": true
}
}
只需要true
值即可确保Firebase不会删除密钥。下载JSON的这个分支可确保您只下载填充微调器所需的最少数据。