Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在RecyclerView元素中单击时更改标题背景色?_Java_Android_Scala_Android Recyclerview - Fatal编程技术网

Java 如何在RecyclerView元素中单击时更改标题背景色?

Java 如何在RecyclerView元素中单击时更改标题背景色?,java,android,scala,android-recyclerview,Java,Android,Scala,Android Recyclerview,我有一个RecyclerView和两个ViewHolder。一个用于标题,一个用于实际项目。现在,我想根据单击的列表项更改标题中的背景颜色(它是一个ImageView)。我试过这个,但得到: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setBackgroundColor(int)' on a null object reference 这是我的代

我有一个
RecyclerView
和两个
ViewHolder
。一个用于标题,一个用于实际项目。现在,我想根据单击的列表项更改标题中的背景颜色(它是一个
ImageView
)。我试过这个,但得到:

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
访问它?

尝试从侦听器中访问imageview:

    override def onClick(view: View): Unit = {
            Toast.makeText(getApplicationContext, s"You clicked ${currentItem.name}!", Toast.LENGTH_SHORT).show()
            val imageView: ImageView = view.findViewById(R.id.imageView).asInstanceOf[ImageView]
            imageView.setBackgroundColor(Color.parseColor(currentItem.color)) // crashed with NPE
    }

谢谢,但它仍然抛出NPE。