欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

ButterKnife 初体验

程序员文章站 2022-10-31 11:14:50
ButterKnife 环境搭建 在project的build.gradle文件中添加依赖的插件 在app的build.gradle文件中添加依赖,并添加插件 使用 在Activity中 小点点 + 在Activity中不需要解绑,但是在Fragment中却需要在onDestroyView中进行解绑 ......

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","zhangsan@163.com",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","zhangsan@163.com",15));
                break;
            case R.id.delete_one:
                StudentDaoOpe.deleteData(this,new Student(null,"zhangsan","zhangsan@163.com",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