我在Android中使用FirebaseListAdapter
来显示基于特定日期的订单列表:
Query orderQuery = ordersRef.orderByChild("dateCreated").startAt(d1.getTime());
我的订单有一个完整的布尔属性
-KsRHO1sLcVxKtVMec3o
completed: false
dateCreated: 1503713136950
我只想在列表适配器中显示未完成的项目。 上面的当前查询检索所有订单。
问题是我不知道如何正确查询数据库以使其工作。
我唯一的想法是在populateView
的{{1}}方法中检查FirebaseListAdapter
,而不是填写与列表项关联的textView。
我可以通过哪种方式获得理想的结果?
答案 0 :(得分:1)
没有Multi Select或“Multi Query”
所以你可以 orderByChild 创造时间或者竞争
所以你必须使用你在问题中提到的方法
The only idea I have is in the populateView method of the
FirebaseListAdapter to check
if(!model.isCompleted()){ } and not fill in the textViews associated with the list item.
或者您必须编辑数据库结构
-completed
-KsRHO1sLcVxKtVMec3o
dateCreated: 1503713136950
和
-Notcompleted
-KsRHO1sLcVxKtVMec3o
dateCreated: 1503713136950
就像它完成时一样..将它从未完成的Node中删除 将其添加到已完成的节点
中答案 1 :(得分:0)
您可以尝试对已完成和未完成的订单使用不同的参考。
最初在下订单时,它将处于incomplete
状态,当您更新order
时,请移动order
key
complete
参考
第1步: 最初订单下达时,请将订单存储在“不完整”的参考文件中,如:
-incomplete:{
-anyRandomKeyGeneratedByFirebase:{
"orderTitle":"My First Order"... your order detail goes here
"orderKey":"anyRandomKeyGeneratedByFirebase"
},
.
.
.
}
以上结构将用于不完整的订单。
当您知道订单状态已完成后,您必须将订单移至complete
子参考,例如:
-complete:{
-anyRandomKeyGeneratedByFirebase:{
"orderTitle":"My First Order"... your order detail goes here
"orderKey":"anyRandomKeyGeneratedByFirebase"
},
.
.
.
}
因此,它将解决您的问题。而不是提取所有订单只从complete
引用中获取已完成的订单。
-orders:{
-incompleteOrders:{
},
-completeOrders:{
}
}