2017-04-17 125 views
0

enter image description hereFirebase聊天登錄後

我想要在UserList中選擇displayName顯示。但我不知道如何選擇在數據庫用戶plase你可以幫助我的displayName。
例如。我選擇6Z86LIYRMaM9vtmOrd23kAeICO63,但我想顯示顯示名

ListView usersList; 
    TextView noUsersText; 
    ArrayList<String> al = new ArrayList<>(); 
    int totalUsers = 0; 
    ProgressDialog pd; 

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

     usersList = (ListView)findViewById(R.id.usersList); 
     noUsersText = (TextView)findViewById(R.id.noUsersText); 

     pd = new ProgressDialog(Users.this); 
     pd.setMessage("Loading..."); 
     pd.show(); 

     String url = "https://chatapp.firebaseio.com/users.json"; 

     StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>(){ 
      @Override 
      public void onResponse(String s) { 
       doOnSuccess(s); 
      } 
     },new Response.ErrorListener(){ 
      @Override 
      public void onErrorResponse(VolleyError volleyError) { 
       System.out.println("" + volleyError); 
      } 
     }); 

     RequestQueue rQueue = Volley.newRequestQueue(Users.this); 
     rQueue.add(request); 

     usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       UserDetails.chatWith = al.get(position); 
       startActivity(new Intent(Users.this, Chat.class)); 
      } 
     }); 
    } 

    public void doOnSuccess(String s){ 
     try { 
      JSONObject obj = new JSONObject(s); 

      Iterator i = obj.keys(); 
      String key = ""; 

      while(i.hasNext()){ 
       key = i.next().toString(); 

       if(!key.equals(UserDetails.username)) { 
        al.add(key); 
       } 

       totalUsers++; 
      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     if(totalUsers <=1){ 
      noUsersText.setVisibility(View.VISIBLE); 
      usersList.setVisibility(View.GONE); 
     } 
     else{ 
      noUsersText.setVisibility(View.GONE); 
      usersList.setVisibility(View.VISIBLE); 
      usersList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, al)); 
     } 

     pd.dismiss(); 
    } 
+3

究竟爲什麼你們不使用火力地堡的Android SDK? https://firebase.google.com/docs/database/android/start/ –

回答

0

正如意見建議,你應該去火力文檔,看你如何使用SDK。

https://firebase.google.com/docs/database/android/start/

具體到你的問題,你需要創建一個POJO類用戶,以便檢索從數據庫用戶時,你可以以後序列化一個對象。

User.java

public class User { 
private int avatarId; 
private String connection; 
private Long createAt; 
private String displayName; 
private String email; 

public User() { 
} 

public int getAvatarId() { 
    return avatarId; 
} 

public void setAvatarId(int avatarId) { 
    this.avatarId = avatarId; 
} 

public String getConnection() { 
    return connection; 
} 

public void setConnection(String connection) { 
    this.connection = connection; 
} 

public Long getCreateAt() { 
    return createAt; 
} 

public void setCreateAt(Long createAt) { 
    this.createAt = createAt; 
} 

public String getDisplayName() { 
    return displayName; 
} 

public void setDisplayName(String displayName) { 
    this.displayName = displayName; 
} 

public String getEmail() { 
    return email; 
} 

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

然後你就可以獲取從這樣的數據庫的用戶信息。

DatabaseReference databaseRef = FirebaseDatabase.getInstance().getReference() 
DatabaseReference userReference = databaseRef.child("users").child("6Z86LIYRMaM9vtmOrd23kAeICO63"); 
    ValueEventListener userListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     //Create a User POJO class with the same values you have in your db 
     //and its getters and setters 
     User user = dataSnapshot.getValue(User.class); 
     //This is how you get the displayName from a user from the db 
     user.getDisplayName(); 
     // ... 
    } 

@Override 
public void onCancelled(DatabaseError databaseError) { 

} 
}; 
userReference.addValueEventListener(userListener); 

我希望這有助於

+0

感謝您的幫助^^ – ThLez

+0

和ValueEventListener userListener = new ValueEventListener()in onCreate? – ThLez

+0

以及有關在聊天中發送圖片的新問題,也許您可​​以幫我 – ThLez