我有以下数据库数据,打算使用FirebaseListAdapter显示在ListView上
我的问题是创建查询,因为日期之后的子元素是匿名的。这是查询代码
Query query = FirebaseDatabase.getInstance().getReference().child("Updates").child(refMail).child(day)
.orderByKey();
refMail和day分别是用户电子邮件地址和日期。
这也是我的数据模型类
public class NotesDataModel {
private String Note;
private String uid;
private String time;
public NotesDataModel(){
}
public NotesDataModel(String Note, String uid, String time){
this.Note=Note;
this.uid=uid;
this.time=time;
}
public String getNote() {
return Note;
}
public void setNote(String note) {
Note = note;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}}
最后是适配器初始化
FirebaseListOptions<NotesDataModel> options = new FirebaseListOptions.Builder<NotesDataModel>()
.setQuery(query, NotesDataModel.class)
.setLayout(R.layout.notes_cell_layout)
.build();
mAdapter = new FirebaseListAdapter<NotesDataModel>(options) {
@Override
protected void populateView(View view, NotesDataModel note, int position) { //some code }}; notesList.setAdapter(mAdapter);
以前的版本是这样的
ref = FirebaseDatabase.getInstance().getReferenceFromUrl(FactoryDaftari.firebaseURL + "Updates/" + refMail + "/" + day);
和适配器初始化
mAdapter = new FirebaseListAdapter<NotesDataModel>(this, NotesDataModel.class, R.layout.notes_cell_layout, ref) {
@Override
protected void populateView(View view, NotesDataModel note, int position) { }};
答案 0 :(得分:0)
您将无法使用数据的结构方式进行此查询。在NoSQL数据库中通常会制作数据副本,这些副本的结构化目的是为了进行专门的查询。因此,如果要查询注释列表,则需要一个结构,其中所有注释都是同一父项的子项,然后针对该结构进行查询。
(此外,像现在一样,通过带有日期的节点组织笔记可能甚至不是最好的常规结构。)