这是我的数据结构
因此0是该月的第一天,依此类推。所以基本上它是循环的,但我不知道该怎么办。我需要一个从哪里开始或应该做什么的想法。
我想要的输出是
因此,如果它是该月的第一天,那么孩子的价格为0,则价格为1,第二天为2
这是我的代码
mRef3 = mRef.child(key).child("promos").child("regular").child(ym).child("price").child("guest1/0");
mRef3.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String price = dataSnapshot.getKey()+": "+dataSnapshot.getValue();
holder.rPrice.setText("FROM " + getString(R.string.currency) + " " + price + " per night ");
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
当前输出: 每晚USD 0:1起
答案 0 :(得分:1)
如果要在特定的一天从数据库中读取值,可以执行以下操作:
DatabaseReference dayRef = FirebaseDatabase.getInstance().getReference("price/guest1/0");
dayRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println(dataSnapshot.getKey()+": "+dataSnapshot.getValue(Long.class));
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
}
如果要从数据库中读取整天的值,则将侦听器附加一级,然后遍历快照的子级:
DatabaseReference dayRef = FirebaseDatabase.getInstance().getReference("price/guest1");
dayRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot daySnapshot: dataSnapshot.getChildren()) {
System.out.println(daySnapshot.getKey()+": "+daySnapshot.getValue(Long.class));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
}
如果要获取每月0日开始的日期:
Calendar.getInstance().get(Calendar.DAY_OF_MONTH)
答案 1 :(得分:0)
我不确定我是否清楚地理解了您的问题,但是如果您要查找特定日期的价格(即每月1号为0,则价格应为1,依此类推),那么您可能必须做这样的事情
在方法getDay中,您可以传递今天是星期几
FirebaseDatabase.getInstance().getReference().child("price").child("guest1").child(getDay()).addChildEventListener(
new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot,
@Nullable String s) {
//get your price here
String price = (String) dataSnapshot.getValue();
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot,
@Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot,
@Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});