Я использую MVVM и RecyclerView в этом приложении, поэтому в режиме повторного просмотра список отображается идеально, но когда я добавляю модель представления в адаптер, я получаю сообщение об ошибке в logcat
Ваша активность еще не присоединена к экземпляру приложения. Вы не можете запросить ViewModel перед вызовом onCreate.
Я новичок в этом MVVM, и я знаю, возможно ли это или любой другой способ сделать это
Это мой класс адаптера с viewHolder
class KeefAdapter : RecyclerView.Adapter<KeefViewHolder>()
{var dataOfAllKeef = listOf ()
init {
dataOfAllKeef = arrayListOf("Marijuwana" , "Bango" , "Weed" , "Hash")
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): KeefViewHolder {
lateinit var binding: KeefSingleItemBinding
binding = DataBindingUtil.inflate(LayoutInflater.from(parent.context) , R.layout.keef_single_item , parent , false)
val viewModel:OrderYourKeefViewModel = ViewModelProvider(OrderYourKeef()).get(OrderYourKeefViewModel::class.java)
binding.orderViewModelWithSingle = viewModel
viewModel.count.observe(OrderYourKeef(), Observer { newCountOfHash->
binding.root.theCountOfHash.text = newCountOfHash.toString()
})
return KeefViewHolder(binding.root)
}
override fun getItemCount() = dataOfAllKeef.size
override fun onBindViewHolder(holder: KeefViewHolder, position: Int) {
val item = dataOfAllKeef[position]
holder.keefName.text = item
if (item.equals("Marijuwana"))
{
holder.keefImage.setImageResource(R.mipmap.marijuana)
}else if (item.equals("Bango"))
{
holder.keefImage.setImageResource(R.mipmap.bango)
}else if (item.equals("Weed"))
{
holder.keefImage.setImageResource(R.mipmap.weed)
}else if (item.equals("Hash"))
{
holder.keefImage.setImageResource(R.mipmap.hashesh)
}
}
}
класс KeefViewHolder (itemView: View): RecyclerView.ViewHolder (itemView) {
var keefName:TextView = itemView.keefName
var keefImage: ImageView = itemView.keefImage
var increase: Button = itemView.increaseTheCount
var decrease: Button = itemView.minusTheCount
var theCountOfKeef: TextView = itemView.theCountOfHash
}