我试图在一个类中捕获关于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成员)。
答案 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>