使用下来,ViewBinding是在构建页面到时候比较方便,Activity类头部也不用声明一大堆控件,只需要在用的时候调用binding.xxxxx.setText()就可以了。但是如果在为了避免Android Studio报警告提示“Resource IDs will be non-final in Android Gradle Plugin version 5.0, avoid using them as annotation attributes”的前提下,把ButterKnife替换为ViewBinding,就会少了那些@OnClick、@OnTextChanged之类的注解方法。目前看过很多介绍ViewBinding和对比ViewBinding与ButterKnife的文章,都没有提到这个问题。在这种情况下,只能使用最原始的setOnClickListener和addTextChangedListener了。对于我来说用ButterKnife一个好处就是不用写findViewById,另一个好处就是不用写setOnClickListener之类的,满屏幕一大片的。如果用ViewBinding替换ButterKnife的话,Base的封装应该不是问题,就是写监听没有ButterKnife方便,不替换的话,满屏幕都是黄色警告,看着也闹心。
看起来应该是如果使用Android Studio 3.6以上的话,只要代码出现R.id.xxxxx这类的都会报警告,那这样的话,使用ViewBinding的情况下写点击事件怎么写,只能写在onCreate里吗,写一堆这个?就这?
viewBinding.textView.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
}
}
)
补充:我知道databinding可以解决问题,但是我不喜欢databinding所以不想用。