我正在管理预订请求。用户从DatePicker中选择日期。之后,我访问Firebase以查看已保留的时隙和未保留的时隙。之后,我必须阻止保留的时间间隔(listView中的项目)。
我的问题是用户可以选择日期和有效日期,并且listView的显示已完成,但是Firebase中的搜索正在运行,因此即使已经预定了相应的时间,也不会阻止该列表的任何项目。
如何让它等到检查完成?
final DatePickerDialog.OnDateSetListener date1 = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
updateLabel(); //to update the date
}
};
private void updateLabel() {
String myFormat = "yyyy-MM-dd"; //In which you need put here
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
//date = sdf.format(myCalendar.getTime());
updateList(date=sdf.format(myCalendar.getTime())); //make firebase search query
pop.setText(date); //
}
private void updateList(String date) {
Query query=myRef.child(id1).child("Newreservation").orderByChild("date").equalTo(date);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
NewReservation model = data.getValue(NewReservation.class);
String pos = model.getEtat(); //if the time is not avaible it return the position of the item in the list
int i =Integer.parseInt(pos);
((TextView)temps.getChildAt(i)).setTextColor(Color.GRAY); //make the item GRAY and non clickable
temps.getChildAt(i).setEnabled(false);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
这是我数据库中的结构: