2017-02-26 20 views
1

我對Android中的Firebase還不熟悉,並且難以從Firebase數據庫檢索數據。從Firebase中檢索數據庫而不使用ListView並設置爲TexView?

我想檢索特定數據庫並將其設置爲Textview而不使用ListView

例如,我想檢索用戶名。這是火力地堡節點結構:

FNS

我一直在尋找的答案,但沒有成功。

mref=new Firebase("https://location-ac626.firebaseio.com"); 
    mref.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      user val = dataSnapshot.getValue(user.class); 
      Log.d("users name : ",val.getname()); 
      namaprofil.setText(val.getname()); 
     } 

這裏是我的用戶代碼:

public class user { 
    public String name, email, kota; 

    public user() { 
    } 

    public user(String name, String email, String kota) { 
     this.name = name; 
     this.email = email; 
     this.kota = kota; 
    } 

    public String getKota() { 
     return kota ; 
    } 

    public void setKota(String kota) { 
     this.kota = kota; 
    } 

    public String getname() { 
     return name ; 
    } 

    public void setname(String name) { 
    } 

    public String getEmail() { 
     return email ; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

} 
+1

什麼問題? –

+0

@FrankvanPuffelen我想檢索特定的節點 – AndriiSG

回答

0
Firebase ref; 
Firebase.setAndroidContext(getActivity()); 
ref = new Firebase(YOUR_FIREBASE_URL); 

------------------ - 單值----------

ref.child("universities/-KNk0.....") 
    .addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
      try { 
      if (dataSnapshot.getValue() != null) { 
       Map<String, Object> value = (Map<String, Object>) dataSnapshot.getValue(); 
       namaprofil.setText(value.get("name")); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
    } 
    @Override 
    public void onCancelled(FirebaseError firebaseError) { 
     } 
    }); 

-----------------對於多個值--------------

ref.child("universities").addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot snapshot, String s) { 
       if (snapshot.getValue() != null 
         && snapshot.getKey().startsWith("-")) { 

        Map<String, Object> value = (Map<String, Object>) snapshot.getValue(); 
        String Name =value.get("name").toString(); // you will get name one by one 
        Log.e("[email protected]@_Name-:-> ",Name); 
       } 
      } 

      @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(FirebaseError firebaseError) { 

      } 
     }); 
+0

它爲一個用戶工作,如果我有很多用戶? – AndriiSG

+0

看到我更新的ans –

+1

非常感謝好友@RjzSatvara – AndriiSG

1

試試這個

FirebaseDatabase mDatabase = FirebaseDatabase.getInstance(); 
DatabaseReference mRef = mDatabase.getReference("universities"); 
mRef.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
      User val = snapshot.getValue(User.class); 
      Log.d("users name : ", val.getname()); 
      namaprofil.setText(val.getname()); 
     } 
    } 
    @Override 
    public void onCancelled(DatabaseError error) { 
     Log.w("ERROR", "Error", error.toException()); 
    } 
}); 
+0

它不適用於我 – AndriiSG

+0

通過'addListenerForSingleValueEvent''更改'addValueEventListener'由 –

相關問題