2017-08-21 52 views
0

I have database like this如何设置从火力

我有微调键值微调名单,我想从火力添加键值到下面而不是微调列表。我使用的代码为我工作组。

我想在微调器中添加键值(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

好像你需要为内部循环,增加一个for循环 –

+0

尝试'为(DataSnapshot areaSnapshot:dataSnapshot.getChildren()){ 为(DataSnapshot日期:areaSnapshot.getChildren()){ 字符串会话= dates.getKey (); sess.add(Session); }} –

回答

0

您正在监听JSON树中的一个级别太高。您的onDataChange()现在由CIVIL节点触发,而您可能希望它降低一个级别。

rootRef.child("First/CIVIL").addValueEventListener(

但有一点需要注意:这将加载每个日期下的所有数据,只是为了在微调器中显示该日期。如果这是大量的数据,那么就是在浪费用户的带宽。

我想在这种情况下,考虑扁平化你的数据结构,并保持一个单独的节点只有日期:

"Dates": { 
    "CIVIL": { 
    "2015-16": true, 
    "2016-17": true, 
    "2017-18": true 
    } 
} 

只是所需的true值,以确保火力地堡不会删除键。下载JSON的这个分支可以确保您只下载填充微调器所需的最小数据。