2017-07-27 58 views
0

image description here如何让所有孩子的数据上的ListView - 火力地堡数据库

我需要得到在童车的所有数据,并显示在ListView控件

在童车的每个值,主要孩子是“XXX-用户“等童车是关于‘示范手机’,,我希望得到的ListView

这童车的所有日期,这是我的活动:

public class xxxxxxx extends AppCompatActivity {ListView listView; 
ArrayList<String> usernames = new ArrayList<>() ; 
FirebaseDatabase database = FirebaseDatabase.getInstance(); 
DatabaseReference myRef = database.getReference("xxx-Users"); 


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





    listView = (ListView) findViewById(R.id.listview00); 
    final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,usernames); 
    listView.setAdapter(arrayAdapter); 

    myRef.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

      String value = dataSnapshot.getValue(String.class); 
      usernames.add(value); 
      arrayAdapter.notifyDataSetChanged(); 


     } 

     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 

     } 

     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

}`**

我的布局

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentTop="true" 
    android:id="@+id/listview00" /> 
+0

请看FirebaseUi库 –

+0

是您的代码的工作有关系吗? 'dataSnapshot.getValue(String.class)''与您的数据相比看起来不正确......而且,您应该在'onCancelled'中输入代码以告诉您错误 –

回答

0

正如cricket_007说,你的代码不符合您的数据结构。您的听众将立即触发xxx-Users下的节点。但是你的实际URL值更深一层。

一个简单的方法来处理程序,这是在onChildAdded()遍历这些嵌套的孩子:

DatabaseReference myRef = database.getReference("xxx-Users"); 
myRef.addChildEventListener(new ChildEventListener() { 
    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
     for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) { 
     String value = childSnapshot.getValue(String.class); 
     usernames.add(value); 
     } 
     arrayAdapter.notifyDataSetChanged(); 
    } 
    ... 
+0

“用户”作为关键名称有点误导。那些看起来像组,也许,如果每个孩子是一个用户字符串 –

+0

谢谢,它的工作! – AboSaqr