如何组合监听器类和视图类? |的Android

时间:2018-01-17 13:02:13

标签: java android onclick imageview onclicklistener

我试图在一个类中捕获关于ImageView的所有内容 首先,我试过了

class myImage extends ImageView{ 
    ...
 }

捕获ImageView的属性。它有效。

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

class myImage extends ImageView implements ImageView.OnClickListener{
    ...
    @Override
    public void onClick(){
         ....
    }
}

这不起作用!我的错是什么?

我试过setOnClickListener(myListener);,它有效。但是在创建实例时,onClick不能是实例本身的方法。

  

PS:集成View和Listener的灵感在于,onClick()方法可以拥有类方法的所有权限(myImage实例的Access成员)。

2 个答案:

答案 0 :(得分:1)

你应该这样做:

     public class MyImageView extends ImageView implements View.OnClickListener {

    setOnClickListener(this);

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

答案 1 :(得分:1)

方法1

首先,我在任何类中实现BindingAdapter函数,最好是使用Global或频繁访问的函数

BindingAdapter.java

 @BindingAdapter({"imageClick"})
   public static final void imageClick(@NotNull View view) {
      // Do your onclick stuff here
   }

ClickInterface.java

public interface ImageClick{
  void onImageClicked()
}

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

fragment_item.xml

<layout>
...
<ImageView
...
app:imageClick="@{(v)->handler.onImageClicked()}"
/>
</layout>

方法2

如果点击功能处于片段或活动中,使视图膨胀,则可以使用此功能。 Fragment.java

...
public void ImageClick(View view){
 // Do your click stuff
}
...

fragment.xml之

<layout>
<data>
<variable
name="fragment"
type="....Fragment"/>
</data>

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