DataBinding实现点击事件

databinding的点击事件有好几种写法,在此实现一种个人觉得应该是最常用的写法。

一般在开发中,点击一个按钮,可能会用到context,也可能会用到当前Activity的数据。

databinding中会将点击事件的逻辑放到另一个类,如果点击事件需要用到Activity的数据,就需要将Activity的相关数据传递过去。

通过监听器绑定的方式可以做到将Activity的数据传递从而实现不同的需求。

具体步骤如下:

1.gradle配置

android {
    ...

    dataBinding {
        enabled = true
    }

    ...
}

2.activity_testclick.xml实现监听器绑定




    
        
        
    

    
        
    

3.实现点击事件处理类OnclickHandler

public class OnclickHandler {
    private static final String TAG = "OnclickHandler";

    public void onClick(View view, MyData myData){
        Toast.makeText(view.getContext(),"view is TextView:"+ (view instanceof TextView)+" " + myData.name,Toast.LENGTH_SHORT).show();
    }
}

该类的onClick方法的参数由xml的android:onClick="@{(view) -> onclickHandler.onClick(view, data)}"传递过来,也就是会把Textview和MyData传递过来

4.Activity绑定数据和布局文件

public class TestClickActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityTestclickBinding binding = 
        DataBindingUtil.setContentView(this,R.layout.activity_testclick);
        MyData data = new MyData();
        binding.setMyData(data);
        OnclickHandler onclickHandler = new OnclickHandler();
        binding.setOnclickHandler(onclickHandler);
    }
}

你可能感兴趣的:(DataBinding,android,android,studio,gradle)