我无法在特定时间后将 Button
设置为在 CardView
上不可见
我想要实现的目标:
我有一个带有 Button
的 CardView
。
当用户下订单时,订单日期和时间存储在 MySQL 服务器数据库中。我从服务器得到这个时间并增加了 10 分钟的延迟。
现在考虑让 Button
在 CardView
中不可见/消失。
我在用什么:
对于时间,我正在使用 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/