Java 如何结合listener类和view类安卓

Java 如何结合listener类和view类安卓,java,android,onclick,imageview,onclicklistener,Java,Android,Onclick,Imageview,Onclicklistener,我试图在一个类中捕获有关ImageView的所有信息。 首先,我试过了 class myImage extends ImageView{ ... } 捕获ImageView的属性。它起作用了 现在,为了整合听众,我试着 class myImage extends ImageView implements ImageView.OnClickListener{ ... @Override public void onClick(){ ....

我试图在一个类中捕获有关ImageView的所有信息。
首先,我试过了

class myImage extends ImageView{ 
    ...
 }
捕获
ImageView
的属性。它起作用了

现在,为了整合听众,我试着

class myImage extends ImageView implements ImageView.OnClickListener{
    ...
    @Override
    public void onClick(){
         ....
    }
}
这不行!我犯了什么错

我尝试了
setOnClickListener(myListener),它可以工作。但是,当创建实例时,这里的onClick不能是实例本身的方法

PS:集成视图和侦听器的灵感在于,
onClick()
方法可以拥有类方法的所有特权(访问
myImage
实例的成员)

您应该这样做:

     public class MyImageView extends ImageView implements View.OnClickListener {

    setOnClickListener(this);

     @Override
     public void onClick(){
     //your click listener
    }
        }

方法1

因此,首先,我在任何类中实现BindingAdapter函数,最好是带有全局或频繁访问函数的类

BindingAdapter.java

ClickInterface.java

然后可以在xml中执行此操作

fragment_item.xml

fragment.xml


...
...

这不是正确的方法。如果在多个屏幕中使用
myImage
,该怎么办。只需遵循传统方法。如果您使用android数据绑定,这将非常容易。我强烈认为,
onClick()
,它与
ImageView
(至少在我的情况下)有着非常密切的关系,应该是视图本身的“属性”。这可以使我的代码更简单。如果你想让它更简单,那么就使用数据绑定。数据绑定只能绑定数据,那么方法呢?
 @BindingAdapter({"imageClick"})
   public static final void imageClick(@NotNull View view) {
      // Do your onclick stuff here
   }
public interface ImageClick{
  void onImageClicked()
}
<layout>
...
<ImageView
...
app:imageClick="@{(v)->handler.onImageClicked()}"
/>
</layout>
...
public void ImageClick(View view){
 // Do your click stuff
}
...
<layout>
<data>
<variable
name="fragment"
type="....Fragment"/>
</data>

...
<ImageView
...
android:onClick="@{fragment::ImageClick}"
/>
...
</layout>