android studio上使用butter Knife
本文介绍butterKnife的基本使用
[TOP]
- 在android studio 中如何使用gradle引入
- butter knife的基本使用
butterKnife是使用生成文件的方式来注解,所以效率问题基本不用当心
注意:如果是7.0.0以上,是要用bind的,一下用的是InjectView
在该model的build.gradle中加入
compile 'com.jakewharton:butterknife:7.0.1'
完整部分如下
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.jakewharton:butterknife:7.0.1'
}
如果sync失败,不要担心,多试几次,我从别人博客copy这一句添加后,试了很久都不成功,但是从官网copy过来就一次成功了,原因嘛,不知道,哈哈哈
好了,接下来介绍基本使用方法
网上说安装插件快捷生成,但是我试了不管用
so,慢慢来
基础
先创建一个BaseActivity,重写setContentView方法
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
ButterKnife.bind(this);
}
然后,在我们要使用的activity继承这个BaseActivity
就可以使用注入了
例如,布局如下
<Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" />
在activity中就可以这样写
@Bind(R.id.button)
Button button;
就相当于使用的button = (button) this.findViewById(R.id.Button)
,这个时候就可以正常使用这个button了
onCLick
如果要写click咋办?easy(@OnClick(可以写多个id))
@OnClick(R.id.button)
public void click(){
Intent intent = new Intent(this, ContentActivity.class);
startActivity(intent);
}
这个相信大家都知道了,相当于onClickListener的监听了
其他的大家可以试试,也可以去官网参考示例
以下引用自http://jakewharton.github.io/butterknife/
Adapter
public class MyAdapter extends BaseAdapter {
@Override public View getView(int position, View view, ViewGroup parent) {
ViewHolder holder;
if (view != null) {
holder = (ViewHolder) view.getTag();
} else {
view = inflater.inflate(R.layout.whatever, parent, false);
holder = new ViewHolder(view);
view.setTag(holder);
}
holder.name.setText("John Doe");
// etc...
return view;
}
static class ViewHolder {
@Bind(R.id.title) TextView name;
@Bind(R.id.job_title) TextView jobTitle;
public ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
}
view 集合
@Bind({ R.id.first_name, R.id.middle_name, R.id.last_name })
List<EditText> nameViews;
设置值
ButterKnife.apply(nameViews, DISABLE);
ButterKnife.apply(nameViews, ENABLED, false);
ButterKnife.apply(nameViews, View.ALPHA, 0.0f);
fragment
public class FancyFragment extends Fragment {
@Bind(R.id.button1) Button button1;
@Bind(R.id.button2) Button button2;
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fancy_fragment, container, false);
ButterKnife.bind(this, view);
// TODO Use fields...
return view;
}
@Override public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
}
}