2016-07-25 74 views
4

我試圖從firebase檢索數據並使用firebase-ui將其顯示在我的列表視圖中。代碼運行正常,但沒有任何內容顯示在列表視圖中。這是我從我的日誌中獲取:嘗試在firebase上填充listview時沒有設置器/字段

W/ClassMapper:爲-KNRXdDOlA9nV6qxXvOl沒有setter /場階級發現com.example.sammie.coreteccontacts.Sacco

這裏是我的FirebaselistAdapter

DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference(); 
FirebaseListAdapter<Sacco> adapter = new FirebaseListAdapter<Sacco>(getActivity(), Sacco.class, android.R.layout.simple_list_item_1, mDatabaseReference) { 
@Override 
protected void populateView(View view, Sacco sacco, int i) { 
((TextView)view.findViewById(android.R.id.text1)).setText(Sacco.getName()); 
} 
}; 
contactList.setAdapter(adapter); 

這裏是我的薩科類:

package com.example.sammie.coreteccontacts; 

public class Sacco { 

    String description; 
    String location; 
    static String name; 

    public Sacco() { 
    } 

    public Sacco(String description, String location, String name) { 
     this.name = name; 
     this.description = description; 
     this.location = location; 
    } 

    public static String getName() { 
     return name; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public String getLocation() { 
     return location; 
    } 
} 

這裏是一個從火力

的數據的樣品KNRWnG6BTkbGJQJVq9Qaddclose

描述: 「測試描述」

位置: 「測試位置」

名: 「測試名稱」

+1

您需要爲'Sacco'類中的每個變量添加setter。例如'public void setDescription(String description){this.description = description; }'。另外如果'name'對象是唯一的,你可能不希望它成爲'static' – wanpanman

+0

我已經添加了setter,但仍然得到相同的錯誤 –

回答

6

有在你的班級中沒有任何setter方法。

public void setName(String name) { 
    this.name = name; 
} 

public void setDescription(String description) { 
    this.description = description; 
} 

public void setLocation(String location) { 
    this.location = location; 
} 

BUT

-KNRWnG6BTkbGJQJVq9Qaddclose

這是一個獨特的密鑰,其是含有您的描述,位置和名稱的目的在於獲得。

W/ClassMapper:階級 com.example.sammie.coreteccontacts.Sacco

發現-KNRXdDOlA9nV6qxXvOl沒有setter /場這表明可能是您的數據庫監聽器的定位錯誤。它讀取-KNRWnG6BTkbGJQJVq9Qaddclose作爲Sacco類的變量而不是它的一個對象。

請檢查JSON文件和DatabaseReference。最有可能的應該是這樣的:

  • UnderChilds < -----(ON兒童LISTENER)。
    • -KNRWnG6BTkbGJQJVq9Qaddclose
    • -KNRWnSYnuojkbGJQJVq9Qaddclos
+0

讓我試試這個,我會回覆你 –

+0

我意識到我正在調用Sacco類的getName()方法,所以我改變它以調用sacco對象的getName()((TextView)view.findViewById(android.R.id.text1))。setText(sacco。 getName());' 我將setter方法添加到Sacco類中,然後將名稱變量更改爲非靜態的 但是我仍然得到相同的錯誤 我該如何實現這個 '這表明數據庫存在錯誤聽衆的定位。它正在讀取-KNRWnG6BTkbGJQJVq9Qaddclose作爲Sacco類的一個變量,而不是它的一個對象。「# –

+0

你在哪個節點上添加Database Listener?另外,請顯示JSON結構例如 –

0

你必須得到引用您的節點: DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance()getReference()。孩子(「你的節點名稱」);