У меня есть RecyclerView
с двумя ViewHolder
. Один для заголовка и один для фактического элемента. Теперь я хочу изменить цвет фона в заголовке (это ImageView
) в зависимости от того, какой элемент списка был нажат. Я попытался это, но получил:Как изменить цвет фона заголовка onClick в элементе RecyclerView?
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setBackgroundColor(int)' on a null object reference
Это мой код:
case class MyItemHolder(view: View, items: Array[Entry]) extends RecyclerView.ViewHolder(view) with MyHolder with View.OnClickListener{
view.setOnClickListener(this)
lazy val currentItem = items(getAdapterPosition - 1)
val textView: TextView = view.findViewById(R.id.textView).asInstanceOf[TextView]
val imageView: ImageView = view.findViewById(R.id.imageView).asInstanceOf[ImageView]
def bind(e: Entry): Unit = textView.setText(e.name)
override def onClick(view: View): Unit = {
Toast.makeText(getApplicationContext, s"You clicked ${currentItem.name}!", Toast.LENGTH_SHORT).show()
imageView.setBackgroundColor(Color.parseColor(currentItem.color)) // crashed with NPE
}
}
ImageView
заголовка на самом деле в его собственной ViewHolder
:
case class MyHeaderHolder(view: View) extends RecyclerView.ViewHolder(view) with MyHolder {
val imageView: ImageView = view.findViewById(R.id.imageView).asInstanceOf[ImageView]
val image = ContextCompat.getDrawable(getApplicationContext, R.drawable.title)
def bind(): Unit = imageView.setImageDrawable(image)
}
Как я могу получить доступ к нему из мой MyItemHolder
?
Спасибо, но он по-прежнему бросает NPE. – user3350744