【问题标题】:Firebase POJO not working, not recognizing class that I am try to cast toFirebase POJO 无法正常工作,无法识别我尝试投放的类
【发布时间】:2017-06-20 19:21:41
【问题描述】:

当我运行下面的代码时,我收到以下错误:

com.google.firebase.database.DatabaseException:类 java.util.HashMap 具有泛型类型参数,请改用 GenericTypeIndicator。

seniorRef.orderByChild("seniorID").equalTo(caretaker.getSeniorID())
    .addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot data : dataSnapshot.getChildren()) {

                Log.d("senior", data.toString());
                Senior senior = data.getValue(Senior.class);
                seniorBox.setText(senior.getFirstName() + " " + senior.getLastName());
                caretasks(senior);
            }
        }

奇怪的是,这段代码在很长一段时间内都能完美运行,而我对高级课程(如下)做了一些小改动,以解决我目前正在处理的问题。当我昨晚取得一些进展时它正在工作,但现在它拒绝将它从 HashMap 转换为 Senior。如果我尝试将其转换为 (Senior) data.getValue(),则会引发类型转换错误。请让我知道我做错了什么。

public class Senior implements Serializable {

private String seniorID;
private String firstName;
private String lastName;
private String address;
private HashMap<String, HashMap> activities;

public Senior (){}

...

}

编辑:还值得一提的是,我有另一个类对同一个对象进行完全相同的查询,效果很好。

【问题讨论】:

  • 数据库中的数据是否可能与您最近对 Senior.class 所做的更改不匹配?
  • @MacLeanSochor 我昨天将HashMap&lt;String, HashMap&gt; activities 参数写入数据库,我刚刚尝试从数据库中删除该特定节点并且它有效,所以错误肯定存在。

标签: android firebase firebase-realtime-database pojo


【解决方案1】:

发生这种情况是因为您的HashMap 没有generic type parameters&lt;String, Object&gt; 不见了。所以为了解决这个问题,你需要改变这一行:

private HashMap<String, HashMap> activities;

用这一行:

private Map<String, Map<String, Object>> activities;

现在你可以得到相应的数据了。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多