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自动找到并把相应的视图布局。

 1 class ExampleActivity extends Activity {
 2 @BindView(R.id.title) TextView title;
 3 @BindView(R.id.subtitle) TextView subtitle;
 4 @BindView(R.id.footer) TextView footer;
 5 @Override public void onCreate(Bundle savedInstanceState) {
 6 super.onCreate(savedInstanceState);
 7 setContentView(R.layout.simple_activity);
 8 ButterKnife.bind(this);
 9 }
10 }

 



上面代码相当于:

1 public void bind(ExampleActivity activity) {
2 activity.subtitle = (TextView) activity.findViewById(R.id.subtitle);
3 activity.footer = (TextView) activity.findViewById(R.id.footer);
4 activity.title = (extView) activity.findViewById(R.id.title);
5 }

 




免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM