0

I am trying to access an imageview from my adapter. I currently have implemented a layout into it but i need to access a diffrent fragment from here aswell. My adapter code is here and the imageview im trying to access is declared like this val imageViewDiffrentLayout : ImageView = view.findViewById(R.id.drinkImage) but when i declare it and try to access it in holder.imageView.setImageResource(R.drawable.img_juicetomato_juice) here i get the error java.lang.NullPointerException: view.findViewById(R.id.drinkImage) must not be null even though i clearly have an image inside it and it is not null.

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.example.waterreminder.R
import com.example.waterreminder.model.BottomModel

class BottomAdapterRV(var dataSet : List<BottomModel>, val OnclickListener : (Int) -> Unit) :
    RecyclerView.Adapter<BottomAdapterRV.ViewHolder>() {

    class ViewHolder(view : View) : RecyclerView.ViewHolder(view) {
        val imageView : ImageView = view.findViewById(R.id.drinkTypeImageView)
        val textView : TextView = view.findViewById(R.id.drinkTypeTV)
        val textViewPercentage : TextView = view.findViewById(R.id.percantageTV)
    }

    override fun onCreateViewHolder(parent : ViewGroup, viewType : Int) : ViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.specific_drink, parent, false)
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder : ViewHolder, position : Int) {
        val item = dataSet[position]
        holder.imageView.setImageResource(item.imageResIdBottom)
        holder.textView.text = item.textBottom
        holder.textViewPercentage.text = "%" + item.percentage.toString()
        holder.imageView.setOnClickListener {
            // Update the image resource of the ImageView when clicked
            holder.imageView.setImageResource(R.drawable.img_juicetomato_juice)
        }
    }

    override fun getItemCount() : Int {
        return dataSet.size
    }
}

Normal layout

changed one

You can see that the code normally works if i declare everthing inside the same layout. But i need to access a diffrent layout and change that.

KeremE.
  • 13
  • 4

0 Answers0