2017-06-20 41 views
0

当我运行下面的代码,我收到以下错误:火力地堡POJO不工作,不承认阶级,我尝试转换为

com.google.firebase.database.DatabaseException: Class java.util.HashMap has generic type parameters, please use GenericTypeIndicator instead.

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。如果我尝试将其转换为(高级)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(){} 

... 

} 

编辑:还值得一提的是,我有另一个类,使同一个对象,完全相同的查询,它工作得很好。

+0

目前数据库中的数据可能与您最近对Senior.class所做的更改不匹配吗? –

+0

@MacLeanSochor我得到'HashMap 活动'参数来写入数据库昨天,我只是试图从数据库中删除该特定的节点,它的工作原理,所以错误肯定存在。 –

回答

1

这是因为您的HashMap没有generic type parameters<String, Object>丢失。因此,为了解决这个问题,你需要改变这一行:

private HashMap<String, HashMap> activities; 

这一行:

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

现在你可以相应获得数据。

希望它有帮助。