java - 在 CardView android 上禁用按钮

标签 java android jodatime android-cardview

我无法在特定时间后将 Button 设置为在 CardView 上不可见

我想要实现的目标: 我有一个带有 ButtonCardView。 当用户下订单时,订单日期和时间存储在 MySQL 服务器数据库中。我从服务器得到这个时间并增加了 10 分钟的延迟。

现在考虑让 ButtonCardView 中不可见/消失。

我在用什么: 对于时间,我正在使用 Joda Time & 以下代码位于 Recyclerview

onBindViewHolder()

到目前为止我尝试了什么: 我从服务器获取时间

String orderDate = cOrder.getOrderDate(); // 2016-08-18 00:02:32

然后将时间转换成Date格式

DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
        DateTime dt = dateTimeFormatter.parseDateTime(orderDate);

我使用下面的方法将时间增加 10 分钟,以设置延迟

 DateTime delay = dt.plusMinutes(10);

现在我使用 postDelayed()Button 上设置延迟时间

 holder.btnCancel.postDelayed(new Runnable() {
                @Override
                public void run() {
                    holder.btnCancel.setVisibility(View.GONE);
                }
            }, delay.getMillis());

现在,当我运行该应用程序时,CardView 上的按钮应该已经消失,因为 orderDate 是(8 月 18 日 - 当前日期前两天)。

我也尝试使用常规 Java 时间而不是 JODA,但没有成功。

我无法弄清楚问题是什么。请求您的指导。

谢谢

最佳答案

@user13 的回答很好地解释了 postDelayed() 是如何工作的,所以你应该试试这段代码:

holder.btnCancel.postDelayed(new Runnable() {
            @Override
            public void run() {
                holder.btnCancel.setVisibility(View.GONE);
            }
        }, (10 * 60 * 1000)); // 10 min * 50 sec * 1000 ms
                              // or delay.getMillis() - dt.getMillis()

关于java - 在 CardView android 上禁用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39051808/

相关文章:

android - 强制 RTL 布局方向不适用于应用程序

Android - 微调器的文本下拉列表/选择不显示

java - Joda-Time 是否有一个名为 isToday 的方法

java - UTC 的 Joda DateTime getMillis() 不正确,而是返回本地毫秒

java - hibernate 日期转换

java 如何在JTable中添加WaterMark

java - ThreadLocal 未在重载线程构造函数中设置属性

java - 为什么 getConfiguration 偶尔会抛出 File不能为空?

安卓.view.WindowManager$BadTokenException : Unable to add window -- at Toast

Java:变量 "this"什么时候初始化的?