Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中禁用已预订的插槽_Android_Firebase_Firebase Realtime Database_Android Recyclerview - Fatal编程技术网

如何在android中禁用已预订的插槽

如何在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时间,则应

我必须禁用已预订的插槽,并仅向用户显示可用插槽。 在回收站视图中,时间为上午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);

    }

}

 }