ButterKnife与BindView使用详解

Posted blogger-li

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ButterKnife与BindView使用详解相关的知识,希望对你有一定的参考价值。

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);


以上是关于ButterKnife与BindView使用详解的主要内容,如果未能解决你的问题,请参考以下文章

Bindview 在 Eclipse 中不起作用

手动实现bindview

Android使用AnnotationProcessor模仿ButterKnife

黄油刀ButterKnife的使用

Android自定义processor实现bindView功能

ButterKnife省略findViewById的原理