【发布时间】:2018-04-03 20:47:50
【问题描述】:
所以我想了几天,但似乎没有得到正确的答案。我有一个 Firebase 数据库,我想在一个孩子中搜索数据。现在,我在这里看到了很多很好的例子。我知道如何搜索特定数据:
mDatabaseReference.orderByChild("Time").equalTo("10:00").
addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot userSnapshot: dataSnapshot.getChildren()){
System.out.println(userSnapshot.getKey());
System.out.println(userSnapshot.child("time").getValue(String.class));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
在上面的示例中,我可以在我的子数据库中搜索"10:00"。效果很好,我有这个例子来自这里“Search in firebase database for android?”。
问题是,我有一个时间选择器。时间选择器数据存储在 textView 中。像这样:
pickTimeTextView = findViewById(R.id.timePickTextView);
在时间选择器的 Onclick 上:
pickTimeTextView.setText("");
在 OnTimeSet 上:
pickTimeTextView.setText(String.format(getString(R.string.hour_selected) + "%02d:%02d", hourOfDay, minute));
我的问题是我是否有机会使用 textView 的内容搜索我的 firebase 数据库? textView 中的字符串将随着我在时间选择器中选择的时间而变化。 你们认为我可以用firebase做到这一点吗?如果没有,你能指出我正确的方向吗?提前谢谢!
稍后编辑:
我把查询放在 OnTimeSetListner 中(没有格式就不行):
@Override
public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) {
pickTimeTextView.setText(String.format(getString(R.string.hour_selected) + "%02d:%02d", hourOfDay, minute));
String hours = (hourOfDay < 10) ? "0" + hourOfDay : hourOfDay;
mDatabaseReference.orderByChild("users").equalTo(hourOfDay + minute).
addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot userSnapshot: dataSnapshot.getChildren()){
System.out.println(userSnapshot.getKey());
System.out.println(userSnapshot.child("users").getValue(String.class));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
}
我尝试按照 cutiko 的指示格式化小时和分钟参数,但是当我这样做时,我得到了这个错误:
不兼容的类型。 必需的: java.lang.String 成立: java.io.Serializable & java.lang.Comparable
我再次阅读了我写的内容,但我并没有尽我所能解释问题。 我想在 firebase db 中搜索以查看是否已存储所选(用户的时间)。如果是,则向用户发送错误。我使用时间选择器来选择时间,时间选择器受到限制,只显示上午 8 点到 11 点之间的时间。
【问题讨论】:
-
我刚刚给了你一个答案,但我越读越困惑。我已经用时间设置了 TextView,那么你正在使用日期选择器的时间侦听器,那么为什么在选择时间时不再次运行查询呢?这里还有其他问题吗?
标签: android firebase firebase-realtime-database