2017-07-13 46 views
0

我剛剛接觸android,剛剛學會創建一個像Facebook或Instagram的用戶配置文件,目前我已經註冊了四個用戶的電子郵件/密碼,並在數據庫中存儲電子郵件,姓名,電話。在另一項活動中,我試圖只抓取Facebook上的「你可能認識的人」等註冊用戶的名字,但它什麼也沒有顯示。如何列出Android中的註冊用戶名(Firebase)?

private void showData(DataSnapshot dataSnapshot) { 

    for (DataSnapshot ds: dataSnapshot.getChildren()) { 

     UserInformation userInformation = new UserInformation(); 

     userInformation.setName(ds.child("users").child("name").getValue(UserInformation.class).getName()); 

     ArrayList<String> array = new ArrayList<>(); 

     array.add(userInformation.getName()); 

     ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, array); 

     mListView.setAdapter(adapter); 

    } 

這是正確的方式來獲取它,因爲我得到NullPointerException,UserInformation是包含getter和setter的模型類。

fire-18b42 
      users 
       KWE45gijkfJDK6782IBkjas(UID) 
        email: "@example.com" 
        name: "Example" 
        phone_num: 10000000 

這是我所儲存的數據,數據庫,一旦用戶註冊, 現在這個樣子我有四個用戶,我想提取單獨的ListView每一個名字的人。

回答

2

要顯示那些名字,請使用此代碼:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference usersdRef = rootRef.child("users"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String name = ds.child("name").getValue(String.class); 
      Log.d("TAG", name); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
usersdRef.addListenerForSingleValueEvent(eventListener); 

和輸出會在這種情況下,所有的用戶名。

+0

謝謝你它的工作... –

+0

它的工作良好的日誌,但它不顯示列表中的所有名稱,它只顯示一個名稱 –

+0

可能它顯示的是最後一個名字。發生這種情況的原因是'ArrayList'的聲明必須位於'onDataChange()'方法內部並且'for loop'之外。在'for循環'裏面的Beeing意味着你每次循環時都會創建一個'ArrayList'的新實例。 –

0

Firebase是NoSql。您需要從myRef.child("users")中檢索所有用戶並應用迭代器來獲取所有用戶的名稱。

相關問題