首页
读书
网课

正文

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;

    }

 



上一篇: 没有了
下一篇: 没有了
圣贤书院