あなたの値はBoolean
ではなくMap
です。したがって、コメントは正しいです。値の型にBoolean
/を指定する必要があります。Boolean.class
キーを検索できるようにするには、FirebaseUI-Android 0.2.2 にアップグレードする必要があります。そのリリースpopulateViewHolder(VH, T, int)
では、項目の位置をパラメーターとして取得するオーバーロードを追加しました。これで、アイテムのキーを調べることができます。
これが JSON 構造であるとします。
{
"items": {
"pushid1": "Fri Jan 01 2016 16:40:54 GMT-0800 (PST)",
"pushid2": "Fri Jan 01 2016 16:41:07 GMT-0800 (PST)",
"pushid3": "Fri Jan 01 2016 16:41:25 GMT-0800 (PST)",
"pushid4": "Fri Jan 01 2016 16:41:37 GMT-0800 (PST)",
"pushid5": "Fri Jan 01 2016 16:42:04 GMT-0800 (PST)"
},
"index": {
"pushid1": true,
"pushid3": true,
"pushid5": true
}
}
そのため、日付/時刻を表す文字列を保存し、これらのアイテムのサブセットを選択するためのインデックスを用意しています。
インデックスからノードをロードし、それらのノードが参照するアイテムをロードして、ビューに表示できるようになりました。
FirebaseRecyclerViewAdapter<Boolean, ItemViewHolder> adapter =
new FirebaseRecyclerViewAdapter<Boolean, ItemViewHolder>(
Boolean.class, android.R.layout.two_line_list_item, ItemViewHolder.class, ref.child("index")){
protected void populateViewHolder(final ItemViewHolder viewHolder, Boolean model, int position) {
String key = this.getRef(position).getKey();
ref.child("items").child(key).addListenerForSingleValueEvent(new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
String date = dataSnapshot.getValue(String.class);
((TextView)viewHolder.itemView.findViewById(android.R.id.text1)).setText(date);
}
public void onCancelled(FirebaseError firebaseError) { }
});
}
};
画面上の出力:
完全なコードについては、このリポジトリActivity34559171
の を参照してください。