WeatherAdapter.kt
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.meter_alc_rgb.weatherappcursey.R
import com.meter_alc_rgb.weatherappcursey.databinding.ListItemBinding
class WeatherAdapter : ListAdapter<WeatherModel, WeatherAdapter.Holder>(Comparator()) {
class Holder(view: View) : RecyclerView.ViewHolder(view){
val binding = ListItemBinding.bind(view)
fun bind(item: WeatherModel) = with(binding){
tvDate.text = item.time
tvCondition.text = item.condition
tvTemp.text = item.currentTemp
}
}
class Comparator : DiffUtil.ItemCallback<WeatherModel>(){
override fun areItemsTheSame(oldItem: WeatherModel, newItem: WeatherModel): Boolean {
return oldItem == newItem
}
override fun areContentsTheSame(oldItem: WeatherModel, newItem: WeatherModel): Boolean {
return oldItem == newItem
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.list_item, parent, false)
return Holder(view)
}
override fun onBindViewHolder(holder: Holder, position: Int) {
holder.bind(getItem(position))
}
}
HouraFragment.kt
HouraFragment.kt
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import com.meter_alc_rgb.weatherappcursey.R
import com.meter_alc_rgb.weatherappcursey.adapters.WeatherAdapter
import com.meter_alc_rgb.weatherappcursey.adapters.WeatherModel
import com.meter_alc_rgb.weatherappcursey.databinding.FragmentHoursBinding
class HoursFragment : Fragment() {
private lateinit var binding: FragmentHoursBinding
private lateinit var adapter: WeatherAdapter
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = FragmentHoursBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initRcView()
}
private fun initRcView() = with(binding){
rcView.layoutManager = LinearLayoutManager(activity)
adapter = WeatherAdapter()
rcView.adapter = adapter
val list = listOf(
WeatherModel(
"","12:00",
"Sunny","25ºC",
"", "", "",""),
WeatherModel(
"","13:00",
"Sunny","25ºC",
"", "", "",""),
WeatherModel(
"","14:00",
"Sunny","35ºC",
"", "", "","")
)
adapter.submitList(list)
}
companion object {
@JvmStatic
fun newInstance() = HoursFragment()
}
}
Добрый вечер, по непонятным причинам на данный момент ListItemBinding не работает, можете подсказать почему так может быть?
Добрый вечер! Почему то не хочет инициализировать класс adapter.
adapter = WeatherAdapter()
Перед этим создала глобальную переменную. В ошибке выводит неинициализированный абстрактный класс. Все методы решения, которые предлагают не действуют. Подскажите пожалуйста.
Появляется только первый элемент списка. Остальные не как не хотят. Подскажите в чем может крыться проблема?