2017-09-05 46 views
0

我試圖將firebase數據庫數據讀取到列表中,我得到「com.google.firebase.database.DatabaseException:未能將類型java.lang.Long的值轉換爲字符串」或nullpointerexception at Products product = ds.getValue(Products.class);Android Firebase

enter image description here

public class Products { 

private String id; 
private String reccomended; 

public Products(){} 

public Products(String id, String reccomended){ 
    this.id = id; 
    this.reccomended = reccomended; 
} 

public String getId() {return id;} 

public void setId(String id) {this.id = id;} 

public String getReccomended() {return reccomended;} 

public void setReccomended(String reccomended) {this.reccomended = reccomended;} 
} 

偵聽器(locationSelected是位置(當前爲 「1」 或 「2」)從噴絲加載的另一個活動通過)

dbRef.child(locationSelected).child("products").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot ds : dataSnapshot.getChildren()){ 
       Products product = ds.getValue(Products.class); 
       list.add(product); 
      } 
      for (int i=0; i<list.size(); i++){ 
       Log.d("LIST: ", list.get(i).toString()); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

例如:

Log.d("LOG: ", ds.getValue().toString()); 

給出了這樣的輸出:

D/LOG:: {reccomended=7, id=502100} 
D/LOG:: {reccomended=10, id=502267} 
D/LOG:: {reccomended=15, id=502291} 
+0

試'Long.toString(list.get(ⅰ))' – ColonD

+0

問題是在該行 「產品產物= ds.getValue(Products.class);」 – fkvestak

回答

1

嘗試使用數字數據類型數值數據:

public class Products { 

    private Long id; 
    private Integer reccomended; 
    //... 

好像火力地堡想你的ID轉換爲長基於內容而不是String。

+0

以及沒有錯誤或與您的解決方案崩潰,但現在我的列表輸出這樣的: 'd/LIST :: hr.[email protected] d/LIST :: [email protected] d/LIST :: hr.aduro.inventorymanagement.Products @ 107bad9' – fkvestak

+0

我錯: '爲(INT I = 0; I <則爲list.size();我++){ Log.d( 「LIST」,列表.get(i).getId()。toString()+ list.get(i).getReccomended()。toString()); }' 現在輸出正確的數據 – fkvestak

1

您可以按照您的模型類中的要求重寫toString方法。

public String toString(){ 
return "{reccomended = "+this.reccomended+ ", id =" + this.id +"}"; 
}