Android数据绑定view.onTouchListener

时间:2017-08-15 12:05:53

标签: android data-binding ontouchlistener

数据绑定中的

VBCSCompiler.exe

Android

并且在其<Button android:onClick="@{handler.someButtonClick()}"/> 中,它的听众会有些像:

Handler class

我想为public View.OnClickListener someButtonClick() { return new View.OnClickListener() { @Override public void onClick(View view) { } }; } 实施OnTouchListener我可以知道按下按钮时以及何时释放按钮

像:

Button

有没有办法完成这项任务。

2 个答案:

答案 0 :(得分:4)

以下是您可以使用的解决方法。

@BindingAdapter("touchListener")
public void setTouchListener(View self,boolean value){
    self.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent event) {
            // Check if the button is PRESSED
            if (event.getAction() == MotionEvent.ACTION_DOWN){
                //do some thing
            }// Check if the button is RELEASED
            else if (event.getAction() == MotionEvent.ACTION_UP) {
                //do some thing
            }
            return false;
        }
    });
}

然后在xml中

<Button  app:touchListener="@{true}"}"/>

答案 1 :(得分:2)

ViewModel

namespace someNamespace
{

    public delegate void TrackingEventHandler(Object sender, TrackingEventArgs e);

    internal Class BaseClass{ }
    internal Class DerivedClass : BaseClass, InterfaceClass
    {
      public event TrackingEventHandler NewTrackingEventObservations;
    }
}

数据绑定

public class RecyclerViewModel   {
      public View.OnTouchListener onTouchListener;

      public void setOnTouchListener( View.OnTouchListener onTouchListener) {
          this.onTouchListener = onTouchListener;
      }
}

在xml中使用

@BindingAdapter("onTouchListener")
public static void setOnTouchListener(View view, View.OnTouchListener onTouchListener) {
    if (onTouchListener != null)
        view.setOnTouchListener(onTouchListener);
}