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
}
}
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.