ButterKnife
ButterKnife
是一个专注于Android系统的View
注入框架,以前总是要写很多findViewById
来找到View
对象,
有了ButterKnife
可以很轻松的省去这些步骤。是大神JakeWharton
的力作,目前使用很广。
最重要的一点,使用ButterKnife
对性能基本没有损失,因为ButterKnife
用到的注解并不是在运行时反射的,
而是在编译的时候生成新的class。项目集成起来也是特别方便,使用起来也是特别简单。
使用方法:
1、在build.grade(Moudle)中添加如下依赖
//butterknife
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
2、在Activity
中使用
@BindView(R.id.iv_back)
ImageView img_back;
@BindView(R.id.blog_content)
TextView text_content;
@BindView(R.id.blog_title)
TextView text_title;
@BindView(R.id.blog_createTime)
TextView text_createTime;
@BindView(R.id.blog_comment_num)
TextView text_comments;
@BindView(R.id.blof_prefers)
TextView text_prefers;
@BindView(R.id.blog_user_name)
TextView text_username;
3、在onCreate()
方法中注册(重要)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_blog);
ButterKnife.bind(this);//注意位置 否则报错
}
4、在Adapter
中使用
class LinearViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.tv_title)
TextView tv_title;
@BindView(R.id.tv_content)
TextView tv_content;
@BindView(R.id.blog_prefers)
TextView tv_prefers;
@BindView(R.id.blog_views)
TextView tv_views;
@BindView(R.id.blog_user_name)
TextView tv_username;
@BindView(R.id.line_index)
LinearLayout linearLayout;
@BindView(R.id.blog_avatar)
ImageView imageView;
public LinearViewHolder(@NonNull View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);//注意
}
}
5、在Fragment
中使用
@BindView(R.id.me_avatar)
ImageView imageView;
@BindView(R.id.me_username)
TextView text_username;
@BindView(R.id.me_description)
TextView text_userDcrp;
ApiService apiService;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_user, container, false);
ButterKnife.bind(this, view);//注意
initData();
return view;
}