本文主要介绍butterKnife1.8,之前的也都是大同小异。
功能1: 再也不用写findViewById()了.
功能2: 再也不用写setOnClickListener()了.
功能3: 组建View List: 把多个View放在一起用.
这里推荐大家一个插件Android butterknife Zelezny
在app的gradle里配置如下:
apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.example.mengdd.butterknifesample" minSdkVersion 14 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.1.1' compile 'com.jakewharton:butterknife:8.0.1' apt 'com.jakewharton:butterknife-compiler:8.0.1' }
Project:
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.0' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } }一定要注意gradle中的配置,否则绑定会报错如果都配置成功了,那么我们就可以继续向下来愉快的探索了。废话不多说,先看下效果:![]()
Activity中使用butterKnife:
@BindView(R.id.samples_list) ListView mListView;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this);//注:必须在setContentView()以下 }
上面推荐的那个插件,如果小伙伴们已经安装的话,可以把鼠标放在R.layout.activity_main上 ,
然后按你设置的快捷键就可以自动生成ButterKnife.bind(this)啦;
Fragment中使用:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = View.inflate(getActivity(), R.layout.homepage_fragment_layout, null);
ButterKnife.bind(this, view);
return view;
}
Adapter中使用:
public static class ViewHolder {
@BindView(R.id.lv_item)
TextView lvItem;
@BindView(R.id.iv_ok)
ImageView ivOk;
ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
使用ButterKnife设置多个按钮监听事件:
@OnClick({R.id.tv_back, R.id.iv_details})
void onClick(View view) {
switch (view.getId()) {
case R.id.tv_back:
break;
case R.id.iv_details:
break;
}
}
View集合中的使用
可以将多个view组成一个List或数组。
@Bind({ R.id.first_name, R.id.middle_name, R.id.last_name })
List<EditText> nameViews;
apply方法可以一次作用到所有的View。
ButterKnife.apply(nameViews, DISABLE);
ButterKnife.apply(nameViews, ENABLED, false);
Action 和 Setter 接口可以指定简单的行为。
static final ButterKnife.Action<View> DISABLE = new ButterKnife.Action<View>() {
@Override public void apply(View view, int index) {
view.setEnabled(false);
}};
static final ButterKnife.Setter<View, Boolean> ENABLED = new ButterKnife.Setter<View, Boolean>() {
@Override public void set(View view, Boolean value, int index) {
view.setEnabled(value);
}};
这样大家就可以愉快的使用ButterKnife了,不足之处,还请各位包含。