ButterKnife 是注解中相对简答易懂的很不错的开源框架
1.强大的view绑定和Click事件处理功能,简化代码,提升开发效率
2.方便的处理Adater里的ViewHolder绑定问题
【Android笔记】v10.2.3最新版ButterKnife的配置及使用
Android Studio v4.0.1,
Gradle v6.1.1,
SDK 为Android 10.0+ ®.
1. Android Studio添加依赖
1.1 build.gradle(Module:app)文件
第一处:文件顶部添加插件。
id 'com.jakewharton.butterknife'
第二处:添加 compileOptions.
第三处:添加 dependencies.
dependencies {
...
// Butterknife
implementation 'com.jakewharton:butterknife:10.2.3'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
}
1.2 build.gradle(Project:xxx)文件
buildscript {
repositories {
google()
jcenter()
//mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:4.0.1"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
//butterknife!!!添加这一条classpath
classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.3'
}
}
3. ButterKnife 在项目中应用
3.1 @BindView()
绑定id
@BindView
一键生成全部需要 findViewById()
的控件对象。
首先,右键 setContentView()
设置的布局xml名字,点击Generate
.
类头部自动生成对象:
@BindView(R.id.edit_city)
EditText editCity;
@BindView(R.id.btn_simAlert)
Button btnSimAlert;
类尾部自动生成方法:
@OnClick(R.id.btn_comAlert)
public void onViewClicked() {
}
3.2 @OnClick
Button点击事件
3.3 @OnClick
RadioButton点击事件
3.4 @OnCheckedChanged
CheckBox点击事件
3.5 @OnPageChange
ViewPager事件监听
package com.example.testapplication;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class ButterknifeActivity extends Activity {
@BindView(R.id.bt_butterknife)
Button btn;
@BindView(R.id.tv_title)
TextView tvTitle;
@BindView(R.id.tv_butterknife)
TextView tvButterknife;
@BindView(R.id.cb_butterknife)
CheckBox cbButterknife;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_butterknife);
ButterKnife.bind(this);
initData();
}
@OnClick(R.id.bt_butterknife)
void btnClick(View view) {
Toast.makeText(ButterknifeActivity.this, "点击了", Toast.LENGTH_SHORT).show();
}
@OnClick(R.id.cb_butterknife)
void btnCherch(View view){
Toast.makeText(ButterknifeActivity.this, "点击了checkbox", Toast.LENGTH_SHORT).show();
}
private void initData() {
tvTitle.setText("插件难搞");
tvButterknife.setText("butterknife版本问题");
}
}