ForecastListAdapter.kt 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package com.ted.weather.ui.adapter
  2. import android.support.v7.widget.RecyclerView
  3. import android.view.LayoutInflater
  4. import android.view.View
  5. import android.view.ViewGroup
  6. import com.ted.weather.R
  7. import com.ted.weather.domain.model.Forecast
  8. import com.ted.weather.domain.model.ForecastList
  9. import com.ted.weather.extensions.ctx
  10. import com.ted.weather.extensions.toDateString
  11. import com.squareup.picasso.Picasso
  12. import kotlinx.android.synthetic.main.item_forecast.view.*
  13. class ForecastListAdapter(val weekForecast: ForecastList, val itemClick: (Forecast) -> Unit) :
  14. RecyclerView.Adapter<ForecastListAdapter.ViewHolder>() {
  15. override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
  16. val view = LayoutInflater.from(parent.ctx).inflate(R.layout.item_forecast, parent, false)
  17. return ViewHolder(view, itemClick)
  18. }
  19. override fun onBindViewHolder(holder: ViewHolder, position: Int) {
  20. holder.bindForecast(weekForecast[position])
  21. }
  22. override fun getItemCount() = weekForecast.size
  23. class ViewHolder(view: View, val itemClick: (Forecast) -> Unit) : RecyclerView.ViewHolder(view) {
  24. fun bindForecast(forecast: Forecast) {
  25. with(forecast) {
  26. Picasso.with(itemView.ctx).load(iconUrl).into(itemView.icon)
  27. itemView.date.text = date.toDateString()
  28. itemView.description.text = description
  29. itemView.maxTemperature.text = "{$high}º"
  30. itemView.minTemperature.text = "{$low}º"
  31. itemView.setOnClickListener { itemClick(this) }
  32. }
  33. }
  34. }
  35. }