ButterKnife

环境搭建

在project的build.gradle文件中添加依赖的插件

//ButterKnife 的插件
// classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'

在app的build.gradle文件中添加依赖,并添加插件

implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

使用

在Activity中

public class MainActivity extends AppCompatActivity {

    private static final String TAG = MainActivity.class.getSimpleName();
//使用@BindView来绑定一个View对象,绑定的对象不能是private或者static修饰的
@BindView(R.id.add_one)
Button addOne;
@BindView(R.id.add_100)
Button add100;
@BindView(R.id.update_100)
Button update100;
@BindView(R.id.update_first)
Button updateFirst;
@BindView(R.id.delete_one)
Button deleteOne;
@BindView(R.id.delete_all)
Button deleteAll;
@BindView(R.id.query)
Button query; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//绑定必须发生在已经设置过layout布局文件之后
ButterKnife.bind(this);
}
//用@OnClick注解标识是Click方法
@OnClick({R.id.add_one, R.id.add_100, R.id.update_100, R.id.update_first, R.id.delete_one, R.id.delete_all, R.id.query})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.add_one:
StudentDaoOpe.insertData(this,new Student(null,"zhangsan","[email protected]",15));
break;
case R.id.add_100:
add100();
break;
case R.id.update_100:
update100();
break;
case R.id.update_first:
StudentDaoOpe.updateData(this,new Student(null,"zhangsan","[email protected]",15));
break;
case R.id.delete_one:
StudentDaoOpe.deleteData(this,new Student(null,"zhangsan","[email protected]",15));
break;
case R.id.delete_all:
StudentDaoOpe.deleteAllData(this);
break;
case R.id.query:
startActivity(new Intent(this,QueryActivity.class));
break;
}
Log.i(TAG, "onViewClicked: "+view.getId() + " finish ");
} private void add100() { } private void update100() { }
}

小点点

  • 在Activity中不需要解绑,但是在Fragment中却需要在onDestroyView中进行解绑
  • 修饰符不允许使用private或者static
  • 在非Activity中,bind的this参数不允许被替换为getActivity
  • 可以绑定颜色,资源等,也可以绑定多个view

事件处理

  • @OnClick 点击事件
  • @OnCheckedChanged 选中和取消选中
  • @OnEditorAction 软键盘的功能键
  • @OnFocusChange 焦点改变
  • @OnItemClick item 条目被点击
  • @OnItemLongClick 长按
  • @OnItemSelected item被选择事件
  • @OnLongClick 长按事件
  • @OnPageChange 页面改变事件
  • @OnTextChanged EditText里面的文本变化事件
  • @OnTouch 触摸事件
  • @Optional
05-11 22:33