如何在android中禁用已预订的插槽
我必须禁用已预订的插槽,并仅向用户显示可用插槽。 在回收站视图中,时间为上午9:00至晚上9:00。已预订的插槽应处于禁用模式,用户只能选择可用插槽 在主活动中,im存储从上午9:00到晚上9:00的所有时间段,并传递到适配器 在adapter类中,我想从firebase获取预订的插槽,并在time arraylist对象中比较这些插槽 getHourarray() 时间适配器 在适配器类中,它应该获取已预订的插槽,并与arraylist进行比较。如果已预订的插槽等于arraylist时间,则应为禁用模式,其他插槽应为启用模式如何在android中禁用已预订的插槽,android,firebase,firebase-realtime-database,android-recyclerview,Android,Firebase,Firebase Realtime Database,Android Recyclerview,我必须禁用已预订的插槽,并仅向用户显示可用插槽。 在回收站视图中,时间为上午9:00至晚上9:00。已预订的插槽应处于禁用模式,用户只能选择可用插槽 在主活动中,im存储从上午9:00到晚上9:00的所有时间段,并传递到适配器 在adapter类中,我想从firebase获取预订的插槽,并在time arraylist对象中比较这些插槽 getHourarray() 时间适配器 在适配器类中,它应该获取已预订的插槽,并与arraylist进行比较。如果已预订的插槽等于arraylist时间,则应
public class TimeAdapter extends RecyclerView.Adapter<TimeAdapter.TimeViewHolder> {
private AdapterCallback mAdapterCallback;
IMethodCaller iMethodCaller;
ArrayList<TimeSlot> times;
private Context context;
String start_time="";
public String getStart_time() {
return start_time;
}
public void setStart_time(String start_time) {
this.start_time = start_time;
}
public TimeAdapter( ArrayList<TimeSlot> times, Context context,IMethodCaller iMethodCaller) {
this.iMethodCaller = iMethodCaller;
this.times = times;
this.context = context;
}
@Override
public TimeAdapter.TimeViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.time_slot_layout, parent, false);
TimeViewHolder viewHolder = new TimeViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(final TimeAdapter.TimeViewHolder holder, final int position) {
holder.text_time.setText(times.get(position).getTime());
holder.text_description.setText(times.get(position).getIsAvailable());
int count=0;
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.cardView.setCardBackgroundColor(context.getResources().getColor(android.R.color.darker_gray));
holder.text_description.setTextColor(context.getResources()
.getColor(android.R.color.white));
holder.text_time.setTextColor(context.getResources().getColor(android.R.color.white));
start_time = times.get(position).toString();
iMethodCaller.getTimefromAdapter(times.get(position));
}
});
}
@Override
public int getItemCount() {
return times.size();
}
public static class TimeViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private ItemClickListener itemClickListener;
protected TextView text_time,text_description;
protected CardView cardView;
public TimeViewHolder(View itemView) {
super(itemView);
cardView=(CardView)itemView.findViewById(R.id.card_time_slot);
text_time = (TextView) itemView.findViewById(R.id.time_slot);
text_description=(TextView)itemView.findViewById(R.id.txt_time_slot_description);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
itemClickListener.onClick(v, getAdapterPosition(), false);
}
}
}
公共类TimeAdapter扩展了RecyclerView.Adapter{
专用适配器回调mAdapterCallback;
IMethodCaller IMethodCaller;
ArrayList时代;
私人语境;
字符串start_time=“”;
公共字符串getStart_time(){
返回开始时间;
}
公共无效设置开始时间(字符串开始时间){
this.start\u time=开始时间;
}
公共时间适配器(ArrayList时间、上下文上下文、IMethodCaller IMethodCaller){
this.iMethodCaller=iMethodCaller;
这个。次=次;
this.context=上下文;
}
@凌驾
public TimeAdapter.TimeViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.time\u slot\u布局,parent,false);
TimeViewHolder viewHolder=新的TimeViewHolder(v);
返回视图持有者;
}
@凌驾
public void onBindViewHolder(final TimeAdapter.TimeViewHolder,final int位置){
holder.text_time.setText(times.get(position.getTime());
holder.text_description.setText(times.get(position.getIsAvailable());
整数计数=0;
holder.itemView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
setCardBackgroundColor(context.getResources().getColor(android.R.color.darker_gray));
holder.text_description.setTextColor(context.getResources()
.getColor(android.R.color.white));
holder.text_time.setTextColor(context.getResources().getColor(android.R.color.white));
start_time=times.get(position.toString();
iMethodCaller.getTimefromAdapter(times.get(position));
}
});
}
@凌驾
public int getItemCount(){
返回次数。size();
}
公共静态类TimeViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
私有项ClickListener项ClickListener;
受保护的文本查看文本时间、文本描述;
受保护的CardView CardView;
公共时间视图持有者(查看项目视图){
超级(项目视图);
cardView=(cardView)itemView.findViewById(R.id.card\u time\u slot);
text\u time=(TextView)itemView.findViewById(R.id.time\u slot);
text\u description=(TextView)itemView.findViewById(R.id.txt\u time\u slot\u description);
setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
onClick(v,getAdapterPosition(),false);
}
}
}
整个实践可能不可能,但我可以告诉您如何做到这一点。您可以做的只是在用户单击任何插槽时更新字段isAvailable=“false”。示例用户1具有所有10个可用插槽,他当时选择了第一个,您必须使用isAvailable=“false”更新该节点,并且当用户2当时从firbase查询出来时,只有那些isAvailable值为true的结果。通过这种方式,您无需处理时间段的问题。您将firestore用作数据库?@Haresh Firebase database not firestore再次感谢@Haresh我已将您的解决方案实施了一半,并将告知您已经完成。你的解决方案对我有效@Haresh非常感谢。
public class TimeSlot {
public String time;
public String isAvailable;
}
public class TimeAdapter extends RecyclerView.Adapter<TimeAdapter.TimeViewHolder> {
private AdapterCallback mAdapterCallback;
IMethodCaller iMethodCaller;
ArrayList<TimeSlot> times;
private Context context;
String start_time="";
public String getStart_time() {
return start_time;
}
public void setStart_time(String start_time) {
this.start_time = start_time;
}
public TimeAdapter( ArrayList<TimeSlot> times, Context context,IMethodCaller iMethodCaller) {
this.iMethodCaller = iMethodCaller;
this.times = times;
this.context = context;
}
@Override
public TimeAdapter.TimeViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.time_slot_layout, parent, false);
TimeViewHolder viewHolder = new TimeViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(final TimeAdapter.TimeViewHolder holder, final int position) {
holder.text_time.setText(times.get(position).getTime());
holder.text_description.setText(times.get(position).getIsAvailable());
int count=0;
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.cardView.setCardBackgroundColor(context.getResources().getColor(android.R.color.darker_gray));
holder.text_description.setTextColor(context.getResources()
.getColor(android.R.color.white));
holder.text_time.setTextColor(context.getResources().getColor(android.R.color.white));
start_time = times.get(position).toString();
iMethodCaller.getTimefromAdapter(times.get(position));
}
});
}
@Override
public int getItemCount() {
return times.size();
}
public static class TimeViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private ItemClickListener itemClickListener;
protected TextView text_time,text_description;
protected CardView cardView;
public TimeViewHolder(View itemView) {
super(itemView);
cardView=(CardView)itemView.findViewById(R.id.card_time_slot);
text_time = (TextView) itemView.findViewById(R.id.time_slot);
text_description=(TextView)itemView.findViewById(R.id.txt_time_slot_description);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
itemClickListener.onClick(v, getAdapterPosition(), false);
}
}
}