2017-07-27 69 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