问题
I Just started using butterknife.
In the project, colleagues using butterknife, version is 7.0.0.
I saw him write @Bind(R.id.tv_name)
.
But I see butterknife official website butterknife version is 8.0.1, syntax is @BindView(R.id.tv_name)
Is syntax changed ? or both can be used ? or something else ?
What is the difference between them ?
I not find the answer on the Internet
I hope everyone's help, thx !
回答1:
Yup, the syntax changed in the version 8.0.
You can check the changelog here: https://github.com/JakeWharton/butterknife/blob/master/CHANGELOG.md#version-800-2016-04-25 to see al the changes. But from 7.X to 8.X the changelog is:
@Bind
becomes@BindView
and@BindViews
(one view and multiple views, respectively).- Calls to
bind
now return anUnbinder
instance which can be used tonull
references. This replaces theunbind
API and adds support for being able to clear listeners.- New:
@BindArray
bindsString
,CharSequence
, andint
arrays andTypeArray
to fields.- New:
@BindBitmap
bindsBitmap
instances from resources to fields.@BindDrawable
now supports atint
field which accepts a theme attribute.The runtime and compiler are now split into two artifacts.
compile 'com.jakewharton:butterknife:8.0.0'
apt 'com.jakewharton:butterknife-compiler:8.0.0'
New:
apply
overloads which accept a single view and arrays of views.- ProGuard rules now ship inside of the library and are included automatically.
@Optional
annotation is back to mark methods as being optional.
回答2:
Yes, the only difference between those keywords is that @Bind
was renamed to @BindView
in v8.0.0.
Please note that ButterKnife.unbind()
was removed, and replaced with an Unbinder
that's returned by bind()
so that no external view references are retained.
来源:https://stackoverflow.com/questions/37662171/what-is-the-difference-between-bind-and-bindview-in-butterknife