问题描述
所以我有 3 个文本视图来显示未来 3 天的预测。我使用视图绑定来绑定视图,但我觉得有一种更简单的编写方法,但我想不出解决方案。如何遍历一周中的几天并相应地设置文本视图?
'''
// getting day of the week
private val dayOfWeek: DayOfWeek = LocalDate.Now().dayOfWeek
// getting day of week as int value
private val dayNum: Int = dayOfWeek.value
'''
''' // 1 = monday etc
private fun forecastDays() {
when (dayNum){
// forecast of next three days
1 -> {
binding.tvDay1.text = "Tuesday"
binding.tvDay2.text = "Wednesday"
binding.tvDay3.text = "Thursday"
}
2 -> {
binding.tvDay1.text = "Wednesday"
binding.tvDay2.text = "Thursday"
binding.tvDay3.text = "Friday"
}
3 -> {
binding.tvDay1.text = "Thursday"
binding.tvDay2.text = "Friday"
binding.tvDay3.text = "Saturday"
}
4 -> {
binding.tvDay1.text = "Friday"
binding.tvDay2.text = "Saturday"
binding.tvDay3.text = "Sunday"
}
.. etc
'''
解决方法
我猜你可能可以用 DateFormatter
做到这一点。这是另一种使用地图的方法。您可以将 daysMap
设为常量。
val daysMap = mapOf(
1 to "Sunday",2 to "Monday",3 to "Tuesday",4 to "Wednesday",5 to "Thursday",6 to "Friday",7 to "Saturday"
)
val dayOfWeek: DayOfWeek = LocalDate.now().dayOfWeek
val dayNum: Int = dayOfWeek.value
binding.tvDay1.text = daysMap[(dayNum + 1) % 7]
binding.tvDay2.text = daysMap[(dayNum + 2) % 7]
binding.tvDay3.text = daysMap[(dayNum + 3) % 7]
,
DayOfWeek 是一个 Enum,这意味着您可以使用序数作为索引以数字方式获取 DayOfWeek。
void
timer_sleep (int64_t ticks)
{
int64_t start = timer_ticks ();
ASSERT (intr_get_level () == INTR_ON);
struct thread *cur = thread_current();
cur->block_ticks = ticks;
enum intr_level old_level = intr_disable ();
thread_block();
intr_set_level (old_level);
thread_yield();
}
static void
timer_interrupt (struct intr_frame *args UNUSED)
{
ticks++;
thread_tick ();
thread_foreach (timer_check,NULL);
}
void
timer_check (struct thread *thread,void *aux) {
if (thread->status == THREAD_BLOCKED) {
thread->block_ticks--;
if (thread->block_ticks <= 0) {
thread_unblock(thread);
}
}
}