DataBinding添加监听

这章介绍DataBinding添加监听。如果不了解DataBinding的话,请查看[DataBinding的简单使用]http://www.jianshu.com/p/6d2c63e86de6

今天主要是DataBinding的监听。通过三种方式实现(目前我已经实现的方式,其中主要有1.传统的setOnClickListener() 2.通过调用某一个实体类的方法。3.直接使用Lambda表达式)

传统的setOnClickListener()

1.在xml文件data标签中的配置



    
    

2.在Button按钮的实现方式

 

        
        

3.在Activity中的实现

      ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
      binding.setClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switch (v.getId()) {
                    case R.id.btn:
                        Toast.makeText(MainActivity.this, "click", Toast.LENGTH_SHORT).show();
                        break;
                    default:
                        Toast.makeText(MainActivity.this, "default", Toast.LENGTH_SHORT).show();
                        break;
                }
            }
        });

调用某个实体类的方法实现

1.首先在代码中新建一个类。比如MyHandler.(注意:showToast(View view)必须带参数View)

public class MyHandler {
    public void showToast(View view) {
        switch (view.getId()) {
            case R.id.btn2:
                Toast.makeText(view.getContext(), "btn2", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn4:
                //  因为我写的MyHandler类是MainActivity的内部类,所以view.getContext()和MainActivity.this是一样的效果。
                Toast.makeText(MainActivity.this, "btn4", Toast.LENGTH_SHORT).show();
                break;
        }
    }
}

2.在xml文件的data标签中的使用




    
      

        
        
    


3.在Button中的使用



    
    

使用LambDa方法实现

其实和方法二差不多,只不过showToast方法里面的参数View并不是必须的,即可以不传参数,也可以传其他的参数,比如String
1.Activity中的代码

public class MyHandler {
   //带String的参数,当然也可以去掉
    public void showToastText(String text) {
        Toast.makeText(MainActivity.this, "btn3  " + text, Toast.LENGTH_SHORT).show();
    }

}

2.在xml文件data标签中的配置


  

    
    

3.在Button中的使用(注意赋值的时候字符的符号)

 
        

完整的代码




    

        

        
        

        

    

    

     
        
        

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //获取binding
        ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

        //以下两种方式都可以实现MyHandler的绑定
        binding.setMHandler(new MyHandler());
        //binding.setVariable(BR.mHandler, new MyHandler());

        binding.setClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switch (v.getId()) {
                    case R.id.btn:
                        Toast.makeText(MainActivity.this, "click", Toast.LENGTH_SHORT).show();
                        break;
                    default:
                        Toast.makeText(MainActivity.this, "default", Toast.LENGTH_SHORT).show();
                        break;
                }
            }
        });


    }

    public class MyHandler {

        public void showToast(View view) {
            switch (view.getId()) {
                case R.id.btn2:
                    Toast.makeText(MainActivity.this, "btn2", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.btn4:
                    Toast.makeText(MainActivity.this, "btn4", Toast.LENGTH_SHORT).show();
                    break;
            }
        }

        public void showToastText(String text) {
            Toast.makeText(MainActivity.this, "btn3  " + text, Toast.LENGTH_SHORT).show();
        }

    }

}

你可能感兴趣的:(DataBinding添加监听)