开发者社区 问答 正文

突出显示日历事件中来自数据库的列表数据

我的数据库中有一些数据,一种日期格式,我想在日历事件中显示一个突出显示,但是仅突出显示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());
      }
  }
}

展开
收起
Puppet 2019-11-28 18:03:51 628 分享 版权
阿里云 AI 助理回答

从你的代码片段来看,你正在尝试从数据库中读取日期数据,并希望在日历视图(假设是Android的日历组件或其他类似的UI组件)上突出显示这些日期。但是,你遇到的问题似乎是尽管能够成功读取数据库中的每个日期并转换为Calendar对象,但最终只能在日历上突出显示一个日期。

问题可能出在以下几点:

  1. 重复添加相同的Calendar实例:确保每次循环时都创建一个新的Calendar实例。虽然你的代码没有直接展示这一点,但如果在循环外部初始化c变量并在循环内复用,可能会导致所有添加到列表的都是同一个Calendar对象的引用,最终只显示最后一次设置的时间。

  2. 日历组件处理高亮逻辑:检查你使用的calendarView.setHighlightedDays(calendars);方法是否支持传入一个包含多个日期的列表来同时高亮多个日子。某些库或组件可能需要特定格式的数据或者有其他限制。

  3. 日期格式与日历组件要求匹配:确认calendarView组件期望的日期格式和你提供的是否一致。虽然你将日期解析为了Calendar对象,但某些组件可能对日期范围、时间精度等有特定要求。

解决方案建议

  • 确保每次迭代都使用新实例:在循环内部创建新的Calendar实例,确保每次迭代都是独立的日期对象。
while (rs.next()) {
    bukti = rs.getString("TGLBUKTI");
    Calendar c = Calendar.getInstance(); // 移动到此处,确保每次循环都有新的实例
    c.setTime(sdf.parse(bukti));
    calendars.add(c);
}
  • 检查日历组件文档:仔细阅读你所使用的日历视图组件的官方文档,了解如何正确地高亮多个日期。如果当前实现不支持直接传入列表,可能需要遍历列表并单独调用高亮方法。

  • 调试和日志:增加更多日志输出,特别是calendars列表的内容,以确认确实收集了所有不同的日期。

  • 错误处理:确保你的异常捕获逻辑能准确捕捉并记录问题,这有助于定位问题所在。

如果以上调整后仍然无法解决问题,可能需要查看具体日历组件的API文档或示例代码,看是否有特定的配置或方法调用被遗漏。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答