Java 如何结合listener类和view类安卓
我试图在一个类中捕获有关ImageView的所有信息。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(){ ....
首先,我试过了
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>