代码之家  ›  专栏  ›  技术社区  ›  Jithin Pavithran

如何结合listener类和view类安卓

  •  -2
  • Jithin Pavithran  · 技术社区  · 8 年前

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

    class myImage extends ImageView{ 
        ...
     }
    

    ImageView . 它起作用了。

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

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

    这行不通!我犯了什么错?

    我试过了 setOnClickListener(myListener); ,它起作用了。但是,当创建实例时,这里的onClick不能是实例本身的方法。

    PS: 整合视图和侦听器的灵感在于 onClick() 方法可以拥有类方法的所有权限(访问 myImage 实例)。

    2 回复  |  直到 7 年前
        1
  •  1
  •   propoLis    8 年前

    您应该这样做:

         public class MyImageView extends ImageView implements View.OnClickListener {
    
        setOnClickListener(this);
    
         @Override
         public void onClick(){
         //your click listener
        }
            }
    
        2
  •  1
  •   Isaac Obella    8 年前

    方法1

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

    BindingAdapter。Java语言

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

    单击界面。Java语言

    public interface ImageClick{
      void onImageClicked()
    }
    

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

    fragment\u项目。xml

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

    方法2

    如果click函数位于使视图膨胀的片段或活动中,则可以使用此函数。 碎片Java语言

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

    碎片xml

    <layout>
    <data>
    <variable
    name="fragment"
    type="....Fragment"/>
    </data>
    
    ...
    <ImageView
    ...
    android:onClick="@{fragment::ImageClick}"
    />
    ...
    </layout>
    
    推荐文章