【发布时间】:2021-06-22 09:15:08
【问题描述】:
我想根据与当前时间的更新日期/时间相比的状态更改特定表格行的背景可绘制对象,并检查自上次更新日期/时间以来是否已经 24 小时,并设置不同的背景可绘制对象。
到目前为止我得到的东西有效,但我不知道如何检查它是否是 24 小时,而不仅仅是大于当前时间
JobRepository jobRepository = new JobRepository(a.getApplication());
jobRepository.findEnquiry().observe(getViewLifecycleOwner(), jobsEnquiry -> {
TableRow[] tableRows = new TableRow[jobsEnquiry.size()];
for (int i=0; i<jobsEnquiry.size(); i++) {
Job job = jobsEnquiry.get(i).job;
tableRows[i] = new TableRow(a);
tableRows[i].setId(i + 1);
tableRows[i].setPadding(0,20,0,20);
if(job.getStatus().equals("Left message/Awaiting reply")){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd H:m:s");
Date updatedDate = job.getUpdatedAt();
Date date = job.getDate();
Date currentTime = Calendar.getInstance().getTime();
tableRows[i].setBackgroundResource(android.R.drawable.list_selector_background);
tableRows[i].setBackgroundResource(R.drawable.table_outline);
if (updatedDate.getTime() < currentTime.getTime()){
tableRows[i].setBackgroundResource(android.R.drawable.list_selector_background);
tableRows[i].setBackgroundResource(R.drawable.table_outline_status);
}
}
else if(job.getStatus().equals("Action required")){
tableRows[i].setBackgroundResource(android.R.drawable.list_selector_background);
tableRows[i].setBackgroundResource(R.drawable.table_outline_status);
}
【问题讨论】:
-
你不能使用
java.time来完成这样的任务吗?为什么要使用过时的java.util.Date? -
这是目前有效的方法,
job.getUpdatedAt()需要日期加上我不熟悉java.time -
好吧,我明白了... 重构大量代码并不是一件好事,但
java.time是一项真正的改进。值得一看... -
另外,从性能的角度来看,这非常糟糕。在每次迭代中创建一个 SimpleDateFormat 是……昂贵的。许多混合职责,更不用说您基本上忽略了时区和偏移量,因此时间的更改(如夏令时)可能会在此代码中产生不正确的结果。
标签: java android android-studio date drawable