Databinding 的几种 click 方式

前提:
有一个 ViewModel 类,有一个 xml,xml 绑定了 ViewModel .

1. @{click}

    //xml:
    

2. 不带参数:@{() -> viewModel.click()}

    //xml:
    

3. @{viewModel::click}

    /xml:
    

tip: 如果是在其它类中设置点击方法,如 EventHandlers.java, 其实与上面一致

    //xml:
    
    
    

//类:绑定handler,如同绑定ViewModel那样

    EventHandlers handler = new EventHandlers();
    binding.setHandler(handler);

    //EventHandlers
    public void click(View view){
        //do
    }

4. 带参数:@{() -> viewModel.click(obj.id)}

    /xml:
    
    
    

    

5. 自定义View中

    /xml:
    
       
        
        

    /IconView:
    public final ObservableField clickListener=new ObservableField<>();


    /xml所在的Activity类:
    binding.iconView.clickListener.set(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
              Toast.makeText(getApplicationContext(),"iconView",Toast.LENGTH_SHORT).show();
     }
    });

6. 带参数

     android:onClick="@{()->loadingModel.chooseLang(2)}"
     public void chooseLang(int language) {
            LogUtil.i(TAG, "language=" + language);
     }

你可能感兴趣的:(Databinding 的几种 click 方式)