一、配置gradle
1、现在根目录下的build.gradle里面声明编译插件
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
2、在module目录下的build.gradle中声明
apply plugin: 'android-apt'
dependencies {
compile 'com.jakewharton:butterknife:8.2.1'
apt 'com.jakewharton:butterknife-compiler:8.2.1'
}
二、基础使用
上面已经配置好了gradle,接下来我们就可以使用他了,好,下面先贴如何使用的代码:
public class MainActivity extends AppCompatActivity {
@BindView(R.id.tv_show)
TextViewtv_show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
tv_show.setText("hello, I had bind by BindView, ok");
}
@OnClick(R.id.tv_show)
public voidshowOnClick(){
Toast.makeText(this,"bind by OnClick",Toast.LENGTH_SHORT).show();
}
@OnClick({R.id.tv_add,R.id.tv_delete})
public voidclickView(View view){
switch(view.getId()){
caseR.id.tv_add:
Toast.makeText(this,"tv_add",Toast.LENGTH_SHORT).show();
break;
caseR.id.tv_delete:
Toast.makeText(this,"tv_delete",Toast.LENGTH_SHORT).show();
break;
}
}
}
优点:
1、再也不用findViewById啦
第一步:@BindView(R.id.tv_show)
TextView tv_show;
第二步:在onCreate中,声明:
ButterKnife.bind(this);
经过上面两步,就已经初始化tv_show对象了,可以直接使用
2、再也不用setOnClickListener啦
如上面所示,对于任何一个View可以:
@OnClick(R.id.tv_show)
public void showOnClick(){
Toast.makeText(this,"bind by OnClick", Toast.LENGTH_SHORT).show();
}
只要声明点击对象的ID即可,这样对应id的组件就有了点击事件
3、可以批量设置点击事件啦,按以下步骤做即可:
@OnClick({R.id.tv_add,R.id.tv_delete})
public void clickView(View view){
switch (view.getId()){
case R.id.tv_add:
Toast.makeText(this,"tv_add", Toast.LENGTH_SHORT).show();
break;
case R.id.tv_delete:
Toast.makeText(this,"tv_delete", Toast.LENGTH_SHORT).show();
break;
}
}
}
4、可以将多个View放在一个列表或数组
@BindViews({R.id.tv_add,R.id.tv_update})
ListallViews;
需要注意的地方:
1、使用butterKnife的域或者方法不能用private、static修饰
2、在fragment中使用和Activity中使用只有一点不同。如下所示:
public class MyFragment extends Fragment {
@BindView(R.id.tv_fragment)
TextViewtv_fragment;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_test,container,false);
ButterKnife.bind(this,view);
return view;
}
}
网友评论