如何在android中禁用已经预订的时段

2024-04-06

我必须禁用已经预订的时段并仅向用户显示可用的时段。 在回收站视图中,时间从 09:00Am 到 09:00Pm 可见。已预订的时段应处于禁用模式,并且用户只能选择可用的时段。

在主要活动中,我存储从 09:00AM 到 09:00PM 的所有时间段并传递到适配器中。

在适配器类中,我想从 firebase 获取预订的插槽,并在时间 arraylist 对象中比较这些插槽。

获取小时数组()

    ArrayList<TimeSlot>times = new ArrayList<TimeSlot>();

    String firstDate = "26/02/2019";
    String firstTime = "09:00 AM";
    String secondDate = "26/02/2019";
    String secondTime = "09:00 PM";

    String format = "hh:mm a";


    SimpleDateFormat sdf = new SimpleDateFormat(format);

    Date dateObj1 = null;
    try {
        dateObj1 = sdf.parse(firstTime);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    Date dateObj2 = null;
    try {
        dateObj2 = sdf.parse(secondTime);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    System.out.println("Date Start: "+dateObj1);
    System.out.println("Date End: "+dateObj2);

    long dif = dateObj1.getTime();
    int i=0;
    while (dif < dateObj2.getTime()) {
        Date slot = new Date(dif);
        SimpleDateFormat sdf1 = new SimpleDateFormat("HH:mm a");
        TimeSlot t = new TimeSlot();
        t.time = String.valueOf(sdf1.format(slot));
        t.isAvailable = "Available";
        times.add(t);
        dif += 3600000;
    }

时隙模型类

 public class TimeSlot {

public String time;
public String isAvailable;

}

时间适配器

在适配器类中,它应该获取已经预订的插槽并与数组列表进行比较。如果已经预订的插槽等于 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);

    }

}

 }

完全实用可能是不可能的,但我可以告诉你如何做到这一点。您可以做的只是当用户单击任何插槽时更新字段 isAvailable="false" 。例如,用户 1 拥有全部 10 个可用槽,他当时选择了第一个槽,您必须使用 isAvailable="false" 更新该节点,而当用户 2 当时从 firbase 查询时,仅查询 isAvailable 值为 true 的结果。通过这种方式,您不需要处理时间段的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在android中禁用已经预订的时段 的相关文章

  • 在名称中使用时间戳时,Android Studio 在构建后无法启动应用程序

    我遇到了 gradle 和 Android Studio 的问题 该问题仅在 Android Studio 中构建时出现 BuildServer 和 Commandline 工作正常 applicationVariants all vari
  • startActivity overridePendingTransition 只显示进入动画

    基本上 我遇到的问题是只显示输入幻灯片动画 调用 Activity 不会产生动画 startActivity intent overridePendingTransition R anim right in partly R anim le
  • Google Play 商店中基于服务的 Android 应用程序

    我正在开发一个应用程序 该应用程序仅包含一些服务 没有任何活动 即没有 UI 基本上 当用户在他 她的设备上安装应用程序时 我希望有 2 到 3 个服务在后台运行 对此我有几个疑问 应用程序安装后我的服务将如何启动 我的BroadcastR
  • 毕加索磁盘缓存

    我正在使用 Picasso 从 URL 加载图像 Picasso with getApplicationContext load product getImageUrl into imageView 据我所知 每次都会访问该网址 而不是缓存
  • ReferenceError:找不到变量:需要

    我在加载时遇到问题node modules到我的网页之一 我已经安装了 npm node js 并且我想使用require 函数在我的网站上初始化 Firebase 我不知道为什么 但它抛出引用错误 ReferenceError 找不到变量
  • ListView:防止视图回收

    我有一个使用回收视图的 ListView 我试图阻止视图被回收 所以我使用 setHasTransientState android support v4 view ViewCompatJB setHasTransientState Vie
  • Android 中有没有办法获取 SD 卡大小?

    欢迎大家 我已经在 Stackoverflow 和 google 上尝试过与此相关的每个问题 但没有一个有效 我已经尝试过类似下一个链接的操作 但它返回的内容与内部存储相同 如何获取外部存储 SD 卡的大小 带安装的 SD 卡 https
  • android:进程和进程名称

    我试图理解android process属性 Ref says http developer android com guide topics manifest application element html proc 如果分配给该属性的
  • Android BLE 扫描在后台几分钟后停止

    当我为公司开发新冠肺炎接触者追踪应用程序时 我在后台遇到了 Android 扫描停止问题 这是我尝试过的 添加前台服务 禁用手机中所有与电池相关的优化选项 启用后台运行的应用程序 测试设备 搭载 Android 10 的 Galaxy S2
  • 更改 Android 中的媒体音量?

    我可以更改媒体音量吗 如何 到目前为止我用过这个 setVolumeControlStream AudioManager STREAM MUSIC 但有一个搜索栏并且想要更改媒体音量 而不是铃声音量 那么有人可以告诉我如何更改媒体音量onC
  • 使用 mupdf android 库导航到特定页面

    我如何使用 muPDF 库导航到特定页面 或者有没有办法让图书馆不记得我最后在那个pdf文件中浏览的是哪一页 Uri uri Uri parse path Intent intent new Intent MainActivity getC
  • 如何使用 Swipe 视图实现 Android TabLayout 设计支持库

    我将使用 android TabLayout 设计支持库 但我不知道如何使用滑动视图 这是我的代码 XML
  • Android - 多次实例化一个片段?

    我正在创建一个在 ListView 中显示数据的应用程序 数据分为两种类型 热门 收藏夹 我有一个活动和两个片段 片段根据类别显示项目列表 我为此使用了 ListView 然后我有两个fragment layouts 它们在设计上完全相同
  • Spotify 登录错误 INVALID_CLIENT:无效的重定向 URI android

    我正在制作一个包含 Spotify 集成的应用程序 我点击了此链接https developer spotify com technologies spotify android sdk tutorial https developer s
  • 如何知道用户是否在 Android 应用程序中输入了错误的密码(锁定屏幕)

    我正在开发一个 Android 应用程序 如果用户在 Android 锁定屏幕中输入错误的密码 则必须完成其中一项活动 例如 如果用户输入错误的密码 则会发送电子邮件 我将不胜感激任何帮助 提前致谢 Kshitij 锁屏在完全沙箱环境中运行
  • 使用后退按钮启动 Activity

    我正在 Android 中开发一个应用程序 我正在寻找解决方案 有一个活动 例如 A1 通过单击按钮 用户可以转到另一个活动 例如 A2 现在 一旦用户完成 A2 活动 他就会单击后退按钮 返回到上一个活动 A1 这是众所周知的事实 A1此
  • 无法登录 Google Play 游戏服务

    我在开发者控制台上使用包名称和正确的签名证书设置了我的游戏 并为其创建了排行榜 但没有创建任何成就 然后 我从以下位置下载了示例 Type A Number Challenge 和 BaseGameUtils https developer
  • BitmapFactory.decodeResource() 忽略 jpg 图像的 inPreferredConfig 选项

    我尝试将jpeg资源图像加载到ARGB 8888格式的位图 BitmapFactory Options opts new BitmapFactory Options opts inPreferredConfig Bitmap Config
  • 如何从灰度字节缓冲区图像创建位图?

    我正在尝试使用新的 Android 人脸检测移动视觉 API 来处理帧图像 所以我创建了自定义检测器来获取帧并尝试调用 getBitmap 方法 但它为空 所以我访问了帧的灰度数据 有没有办法从它或类似的图像持有者类创建位图 public
  • 膨胀类 android.support.design.widget.CoordinatorLayoute 时出错

    我正在尝试运行我的应用程序 但不断收到标题中列出的错误 我读过周围的内容 人们说尝试将主题更改为 AppCombat 主题 但这似乎不起作用 以下是我遇到的错误 Process com example jmeyer27 crazytiles

随机推荐