第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用“gdx-fireapp”從 Firebase 下載列表返回帶有空字段的對象列表

使用“gdx-fireapp”從 Firebase 下載列表返回帶有空字段的對象列表

慕工程0101907 2021-08-25 17:17:19
我正在嘗試使用gdx-fireapp庫在LibGdx應用程序中處理 Firebase 。我遵循了這里給出的例子。我有“下載列表”示例的問題:我創(chuàng)建了 POJO“用戶”類并成功地在數(shù)據(jù)庫中寫入了一個用戶......所以數(shù)據(jù)庫包含一個包含 1 個用戶的列表,其中填寫了所有字段(在數(shù)據(jù)庫控制臺中驗證)。現(xiàn)在,當我嘗試下載具有確切給定代碼的用戶列表時,我得到一個包含 1 個用戶的列表(OK),所有字段均為 NULL這是“用戶”POJO 類public class UserPOJO{  public String username;  public String email;  public UserPOJO(){}  public UserPOJO(String username, String email){    this.username = username;    this.email = email;  }}這是檢索用戶列表的代碼:public static void readUsersJava (){    GdxFIRDatabase.instance().inReference("users")            .filter(FilterType.LIMIT_FIRST, 5)            .readValue(List.class, new DataCallback<List<UserPOJO>>(){                @MapConversion(UserPOJO.class)                @Override                public void onData(List<UserPOJO> list) {                    Gdx.app.log("Firebase Java", "read users OK");                }                @Override                public void onError(Exception e) {                    Gdx.app.log("Firebase Java", "read users KO");                }            });}因為我知道用戶的 ID,所以我可以嘗試從數(shù)據(jù)庫中讀取    GdxFIRDatabase.instance().inReference("users/Xc4x0IOm...")            .readValue(UserPOJO.class, new DataCallback<UserPOJO>() {...}但是這樣做,我得到“java.lang.ClassCastException:java.util.HashMap 無法轉換為 UserPOJO”。這可能是字段為空的原因:無法投射...但我找不到如何擺脫這個錯誤有人可以幫我嗎?
查看完整描述

2 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

好的,我發(fā)現(xiàn)了這個:查詢答案是 Hashmap<String, Hashmap<String, String>>


所以我不得不:


添加一個“order by”子句 -> 使用第一級哈希圖(我不知道為什么)

,這似乎是列表查詢所必需的

創(chuàng)建我的“用戶”類的自定義映射

所以代碼看起來像這樣:(“用戶”類沒有變化)


public static void readUsersJava (){

setUsersMapConverter()

GdxFIRDatabase.instance().inReference("users")

        .orderBy(OrderByMode.ORDER_BY_KEY, null)

        .filter(FilterType.LIMIT_FIRST, 5)

        .readValue(List.class, new DataCallback<List<UserPOJO>>(){

        ...

        });

}


fun setUsersMapConverter(){

    GdxFIRDatabase.instance().setMapConverter(object : FirebaseMapConverter {

        override fun <T : Any?> convert(map: MutableMap<String, Any>, wantedType: Class<T>): T {

            val element = (map.get(map.keys.first())) as HashMap<String, String>

            return UserPOJO(element.get("displayName"), element.get("email")) as T

        }

        // Should be inversion of convert (needed only by GWT platform)

        override fun unConvert(`object`: Any): Map<String, Any>? {

            return null

        }

    })

}

希望能有所幫助。


如果您找到更好的解決方案,請告訴我。


查看完整回答
反對 回復 2021-08-25
  • 2 回答
  • 0 關注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號