java - Android cardview 将特定卡片放在列表末尾
问题描述
我正在制作一个应用程序,其中用户输入任务显示在卡片视图中。每个任务都有自己的截止日期,当截止日期到时,它会显示在列表的底部。
在下面的代码中,到期日期是通过我的任务对象类传递的。在将到期日期 (.getTaskDate) 与当前日期进行比较后,我应该将过期任务放在此处的底部。
在我的适配器内部:
//Overdue tasks
String Currdate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());
if(Currdate.compareTo(tasks.getTaskDate())>0 )
{
taskViewHolder.cardView.setBackgroundColor(mContext.getResources().getColor(R.color.colorRed));
}
我应该如何实现这个功能,它是在 MainActivity 还是我的 Adapter 中完成的?我有类似的日期排序功能,它在我的 MainActivity 中按升序对日期进行排序:
private static void sortDates(final List<TaskObject> listViewItems) {
Collections.sort(listViewItems, new Comparator<TaskObject>() {
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
@Override
public int compare(TaskObject t1, TaskObject t2) {
try {
return dateFormat.parse(t1.getTaskDate()).compareTo(dateFormat.parse(t2.getTaskDate()));
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
});
}
解决方案
只需反转你的排序,你就完成了。将比较器中的 return 语句更改为
return dateFormat.parse(t2.getTaskDate()).compareTo(dateFormat.parse(t1.getTaskDate()));
推荐阅读
- gerrit - How to hide some compiled files from showing up in gerrit review
- lua - 如何将字符串转换为变量名?
- html - 元素不遵守流量,并在浏览器中的意外位置呈现
- javascript - How to place text inside each bar of the chart using d3
- angular - Angular Input Date display from datatable
- flutter - Connection refused error when creating Http server using dart
- c# - 如何在 c# 中循环遍历表并在 datagridview 中显示结果?
- node.js - Why doesn't a url with chrome-devtools:// open the devtools?
- templates - 通用舵图
- javascript - Gulp 任务参考错误:requite 未定义 -