[英]Android Display date from one week to another like (Thursday to Thursday )
[英]How to implement a change of week from one to another android
面对这样的任务:我正在为一所大学制作一个应用程序,其中每个星期(从星期一 00:00 开始)都有自己的名称:分子和分母。 假设当前周是分子,下一周是分母,然后又是分子,依此类推。
我不明白如何使每周显示在我的片段上的类型(分子或分母)成为可能,好吧,最好在星期日的 00:00 分别更改为分子或分母。 我正在使用 Kotlin
我会在 ViewModel 中做到这一点。 使用布尔值公开 LiveData,其中 true/false 对应于分子周或分母周。 选择一个任意的星期一日期作为计算当天的基准。 我随意使用本周的星期一作为这个基准时期。
然而,这种方法假设大学的日历永远不会打破这种模式。 如果它们的模式不一致,您将需要一个数据表来查找要使用的值。
class MyViewModel : ViewModel() {
companion object {
private val WEEK_TYPE_BASELINE_DAY = LocalDate.of(2021, 11, 1)
}
private val mutableWeekType = MutableLiveData<Boolean>()
val weekType: LiveData<Boolean> get() = mutableWeekType
init {
updateCurrentWeekType()
}
private fun updateCurrentWeekType() {
val today = LocalDate.now()
val weeks = Duration.between(WEEK_TYPE_BASELINE_DAY, today).toDays() / 7L
mutableWeekType.value = weeks % 2 == 0L
// In case the week changes while this ViewModel is alive,
// plan the next update.
val nextMonday = today.with(TemporalAdjusters.next(DayOfWeek.MONDAY))
val nextMondayMidnight = LocalDateTime.of(nextMonday, LocalTime.MIDNIGHT)
val timeToNextChange = Duration.between(LocalDateTime.now(), nextMondayMidnight).toMillis()
viewModelScope.launch {
delay(timeToNextChange)
updateCurrentWeekType()
}
}
}
weekType
可以观察weekType
并根据接收到的 true 或 false 来修改任何 UI 元素的文本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.