我的数据库中有一些数据,一种日期格式,我想在日历事件中显示一个突出显示,但是仅突出显示1个数据,如何突出显示所有数据..?
try {
String query = "Select * from dsewa order by TGLBUKTI asc";
Log.e("fifala",""+query);
Statement stmt = con.createStatement();
rs = stmt.executeQuery(query);
List<Calendar> calendars = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
Calendar c = Calendar.getInstance();
while (rs.next()) {
bukti = rs.getString("TGLBUKTI");
c.setTime(sdf.parse(bukti));
Log.e("rara",""+c.getTime());
calendars.add(c);
Log.e("sara",""+c.getTime());
Log.e("kara",""+bukti);
}
if(!rs.next())
{
//ketika semua list udah di tambah, tampilin disini
calendarView.setHighlightedDays(calendars);
Log.e("kevin",""+calendars.size());
}
}
catch (Exception e) {
Log.e("error", "" + e .getMessage());
}
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
从你的代码片段来看,你正在尝试从数据库中读取日期数据,并希望在日历视图(假设是Android的日历组件或其他类似的UI组件)上突出显示这些日期。但是,你遇到的问题似乎是尽管能够成功读取数据库中的每个日期并转换为Calendar
对象,但最终只能在日历上突出显示一个日期。
问题可能出在以下几点:
重复添加相同的Calendar实例:确保每次循环时都创建一个新的Calendar
实例。虽然你的代码没有直接展示这一点,但如果在循环外部初始化c
变量并在循环内复用,可能会导致所有添加到列表的都是同一个Calendar
对象的引用,最终只显示最后一次设置的时间。
日历组件处理高亮逻辑:检查你使用的calendarView.setHighlightedDays(calendars);
方法是否支持传入一个包含多个日期的列表来同时高亮多个日子。某些库或组件可能需要特定格式的数据或者有其他限制。
日期格式与日历组件要求匹配:确认calendarView
组件期望的日期格式和你提供的是否一致。虽然你将日期解析为了Calendar
对象,但某些组件可能对日期范围、时间精度等有特定要求。
Calendar
实例,确保每次迭代都是独立的日期对象。while (rs.next()) {
bukti = rs.getString("TGLBUKTI");
Calendar c = Calendar.getInstance(); // 移动到此处,确保每次循环都有新的实例
c.setTime(sdf.parse(bukti));
calendars.add(c);
}
检查日历组件文档:仔细阅读你所使用的日历视图组件的官方文档,了解如何正确地高亮多个日期。如果当前实现不支持直接传入列表,可能需要遍历列表并单独调用高亮方法。
调试和日志:增加更多日志输出,特别是calendars
列表的内容,以确认确实收集了所有不同的日期。
错误处理:确保你的异常捕获逻辑能准确捕捉并记录问题,这有助于定位问题所在。
如果以上调整后仍然无法解决问题,可能需要查看具体日历组件的API文档或示例代码,看是否有特定的配置或方法调用被遗漏。