2017-06-20 3 views
0

にキャストしようとしていたクラスを認識しない:Firebase 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昨日dbに書き込むために 'HashMap activities'パラメータを取得しました。データベースから特定のノードを削除しようとしましたが、エラーが発生しています。 –

答えて

1

HashMapにはgeneric type parametersが含まれていないため、この問題が発生しています。 <String, Object>がありません。

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

そして今、あなたはそれに応じてデータを取得することができます。この行で

private HashMap<String, HashMap> activities; 

:だから、これを解決するために、あなたはこの行を変更する必要があります。

希望します。

関連する問題