【问题标题】:whats a simple way of inputting days of the week in a view?在视图中输入星期几的简单方法是什么?
【发布时间】:2021-07-07 12:42:16
【问题描述】:

所以我有 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

'''

【问题讨论】:

    标签: java android kotlin android-viewbinding


    【解决方案1】:

    我猜你可以用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]
    

    【讨论】:

    • 非常感谢!现在一切都解决了:)。我知道这是非常简单的事情,我会更多地复习 kotlin/java 知识:)
    【解决方案2】:

    DayOfWeek 是一个Enum,这意味着您可以使用序号作为索引以数字方式获取 DayOfWeek。

    // getting day of the week
    private val dayOfWeek: DayOfWeek = LocalDate.now().dayOfWeek
    // ordinal
    private val dayNum: Int = dayOfWeek.ordinal()
    ...
    private fun forecastDays() {
    
        binding.tvDay1.text = DayOfWeek.values()[(dayNum + 1) % 7].name()
        binding.tvDay2.text = DayOfWeek.values()[(dayNum + 2) % 7].name()
        binding.tvDay3.text = DayOfWeek.values()[(dayNum + 3) % 7].name()
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 2011-12-11
      • 2013-12-31
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      相关资源
      最近更新 更多