2017-03-16 155 views
0

我正在開發一個應用程序,其中的用戶可以有多個列表。我的火力地堡數據庫看起來是這樣的:如何使用HashMap <String,String>顯示來自Firebase數據庫的記錄?

enter image description here

,我使用的模型是這樣的:

public class UserModel { 
    private String userId; 
    private String userName; 
    private String userEmail; 
    private HashMap<String, String> lists; 

    public UserModel() {} 

    public void setUserId(String userId) {this.userId = userId;} 
    public String getUserId() {return userId;} 

    public void setUserName(String userName) {this.userName = userName;} 
    public String getUserName() {return userName;} 

    public void setUserEmail(String userEmail) {this.userEmail = userEmail;} 
    public String getUserEmail() {return userEmail;} 

    public void setLists(HashMap<String, String> lists) {this.lists = lists;} 
    public HashMap<String, String> getLists() {return lists;} 
} 

爲了顯示列表,我用一個FirebaseListAdapterListView。如果我使用這樣的代碼:

DatabaseReference listsRef = usersRef.child(userId).child("lists"); 
adapter = new FirebaseListAdapter<Map<String, String>>(MainActivity.this, Map.class, android.R.layout.simple_list_item_1, listsRef) { 
    @Override 
    protected void populateView(View v, Map<String, String> map, int position) { 
     for (Map.Entry<String, String> entry : map.entrySet()) { 
      Log.d(TAG, entry.getKey() + "/" + entry.getValue()); 
     } 
    }     
    ListView listView = (ListView) findViewById(R.id.list_view); 
    listView.setAdapter(adapter); 
}  

我得到這個錯誤:

Error:(221, 31) error: no suitable constructor found for FirebaseListAdapter 

所有我想要做的就是使用HashMap顯示the keythe value。我錯在哪裏?提前致謝!

回答

1

populateView的第二個參數已經是列表中每個索引的值。所以你只需要將Map更改爲String即可。

adapter = new FirebaseListAdapter<String>(MainActivity.this, String.class, android.R.layout.simple_list_item_1, listsRef) { 
    @Override 
    protected void populateView(View v, String listName, int position) { 
     String listKey = this.getRef(position).getKey(); 
     String listValue = listName; 
    } 
}  

希望這有助於:)

+0

其實,你幫了我很多。它正在工作。如果我使用'setOnItemClickListener'並使用'adapterView.getItemAtPosition(position);'我得到'listName'。你有什麼想法我怎麼能從'adapter'獲得'listKey'?非常感謝! –

+0

您可以將'listKey'保存在另一個列表變量的某個位置,然後您可以根據位置檢索任何值。 :) @AlexM。 – Wilik

+0

「另一個列表變量」,這是什麼意思?我如何根據職位獲取價值?再次感謝您的回答! –

相關問題