我正在開發一個使用Firebase作爲數據庫的Android應用程序。 在我的數據庫中有用戶和組。如何使用Android中的適配器顯示Firebase中的羣組列表?
每個用戶都有一個組的列表,他/她所屬的各組存儲爲組ID。 在db的另一個節點中,有每個組的名稱,groupImage,...的組列表。
我怎麼能顯示該組的列表(用名義和形象)給使用FirebaseListAdapter或任何他的用戶ID的用戶?
p.s.問題不在於使用適配器,而是在獲取組的ID之後,訪問它們而不訪問整個組節點
我正在開發一個使用Firebase作爲數據庫的Android應用程序。 在我的數據庫中有用戶和組。如何使用Android中的適配器顯示Firebase中的羣組列表?
每個用戶都有一個組的列表,他/她所屬的各組存儲爲組ID。 在db的另一個節點中,有每個組的名稱,groupImage,...的組列表。
我怎麼能顯示該組的列表(用名義和形象)給使用FirebaseListAdapter或任何他的用戶ID的用戶?
p.s.問題不在於使用適配器,而是在獲取組的ID之後,訪問它們而不訪問整個組節點
您應該使用回收視圖和適配器來顯示列表中的所有參數,這裏是一個Android的教程創建這樣一個列表https://developer.android.com/training/material/lists-cards.html
編輯:
您可以使用此功能爲你從用戶得到了各組ID:
public void getGroup(String id)
{
groupRef.child(id).addListenerForSingleValueEvent(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
//do something
//add data to the list
}
@Override
public void onCancelled(DatabaseError databaseError)
{
//do something
}
});
}
如果你想要實現這個使用數據庫structur e,我在這些截圖中看到,您需要迭代兩次。首先,您需要查找用戶訂閱的所有組。這意味着您需要從users
節點中找到組ID。比你需要再次迭代,找到組名稱,基於相應的組ID。之後顯示您需要的組名列表。
實現此目的的最簡單方法是將group id
更改爲group name
。這意味着,代替迭代兩次,您只需迭代一次。你的數據庫結構應該是這樣的:
user
|
--- // stuff
|
--- groups
|
--- group_1: true
|
--- group_2: true
|
--- group_3: true
|
--- group_4: true
|
--- group_5: true+
|
--- // other stuff
這意味着您可以遍歷:users/groups
,實際上得到的是一個用戶已經訂閱組的名稱。這些是你需要的組名。
希望它有幫助。
一切都好嗎?我可以幫助您提供其他信息嗎? –
問題不在於使用適配器,而是正確讀取數據。 我可以得到將用戶 - >組節點上的偵聽器的組ID,但是如何在不訪問整個組節點的情況下訪問組? – Ale
您可以像每個用戶一樣爲每個涉及的組ID添加一個監聽器,然後在事件要求他們時添加每個組 –
非常感謝!我在我的user-> groups節點中放置了一個監聽器,然後在OnDataChange內部,我爲(每個groupID)做了類似於 的操作getGroup(groupID); getGroup偵聽該組並將一個Group對象添加到HashMap中。 但是在哪個代碼點我打印列表?我不能在「for」循環之後打印它,因爲我的HashMap中仍然沒有數據(數據是異步讀取的) – Ale