ButterKnife与BindView使用详解
ButterKnife的优势
具有强大的view绑定和click事件处理能力
方便处理Adapter里的viewHolder绑定问题
运行时不会影响app效率,配置方便
代码清晰,可读性强、
使用方法以及注意事项:
在Activity中ButterKnife.bind(this);必须在setContentView();之后,且父类bind绑定后,子类不需要再bind
在Fragment中ButterKnife.bind(this, view);
在Adapter中ButterKnife.bind(this, view);
属性布局不能使用private、static修饰
配置方法
先在application的gradle中加入//后内容
dependencies {
classpath ‘com.android.tools.build:gradle:3.2.0‘
// classpath ‘com.jakewharton:butterknife-gradle-plugin:8.5.1‘
}
再在app的gradle中加入//后内容
dependencies {
compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.2.2‘, {
exclude group: ‘com.android.support‘, module: ‘support-annotations‘
})
compile ‘com.android.support:appcompat-v7:28.0.0‘
testCompile ‘junit:junit:4.12‘
// implementation ‘com.jakewharton:butterknife:8.5.1‘
// annotationProcessor ‘com.jakewharton:butterknife-compiler:8.5.1‘
}
绑定注解
@BindView---->绑定一个view;id为一个view 变量
@BindView(R.id.tv_fm1)
TextView tvFm1;
@BindViews ---->绑定多个view;id为一个view的list变量
@BindViews({ R.id.btn1,R.id.btn2 })
List buttons;
@BindArray---->绑定string里面array数组;
@BindArray(R.array.city )
String[] citys ;
@BindBitmap---->绑定图片资源为Bitmap;
@BindBitmap(R.mipmap.wifi )
Bitmap bitmap;
@BindBool ---->绑定boolean值
@BindColor ---->绑定color;
@BindColor(R.color.colorAccent)
int black;
@BindDimen ---->绑定Dimen;
@BindDimen(R.dimen.borth_width)
int mBorderWidth;
@BindDrawable ----> 绑定Drawable;
@BindDrawable(R.drawable.test_pic)
Drawable mTestPic;
@BindFloat ---->绑定float
@BindInt ---->绑定int
@BindString ---->绑定一个String id为一个String变量;
@BindString(R.string.app_name )
String meg;
如下代码即使用@BindView和一个视图ID注释字段 ,Butter Knife自动找到并把相应的视图布局。
class ExampleActivity extends Activity {
@BindView(R.id.title) TextView title;
@BindView(R.id.subtitle) TextView subtitle;
@BindView(R.id.footer) TextView footer;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
ButterKnife.bind(this);
}
}
上面代码相当于:
public void bind(ExampleActivity activity) {
activity.subtitle = (TextView) activity.findViewById(R.id.subtitle);
activity.footer = (TextView) activity.findViewById(R.id.footer);
activity.title = (extView) activity.findViewById(R.id.title);
}
原文地址:https://www.cnblogs.com/blogger-Li/p/11621115.html