操作符重载 - 例子

优质
小牛编辑
127浏览
2023-12-01

你可以想象,Kotlin List是实现了数组操作符的,所以我们可以像Java中的数组一样访问List的每一项。除此之外:在可修改的List中,每一项也可以用一个简单的方式被直接设置:

  1. val x = myList[2]
  2. myList[2] = 4

如果你还记得,我们有一个叫ForecastList的数据类,它是由很多其他额外的信息组成的。有趣的是可以直接访问它的每一项而不是请求内部的list得到某一项。做一个完全不相关的事情,我要去实现一个size()方法,它能稍微能简化一点当前的Adapter:

  1. data class ForecastList(val city: String, val country: String,
  2. val dailyForecast: List<Forecast>) {
  3. operator fun get(position: Int): Forecast = dailyForecast[position]
  4. fun size(): Int = dailyForecast.size
  5. }

它会使我们的onBindViewHolder更简单一点:

  1. override fun onBindViewHolder(holder: ViewHolder,
  2. position: Int) {
  3. with(weekForecast[position]) {
  4. holder.textView.text = "$date - $description - $high/$low"
  5. }
  6. }

当然还有getItemCount()方法:

  1. override fun getItemCount(): Int = weekForecast.size()