Android中ButterKnife的使用

原文:https://blog.csdn.net/wen_haha/article/details/85878292
记录学习

简介


ButterKnife是注解中相对简单易懂的很不错的开源框架,使用ButterKnife可以提升我们的开发效率,不需要写很多findViewById来找到View对象,可以为我们省去很多的时间。

特点


1.强大的View绑定和Click事件处理功能,简化代码,提升开发效率

2.方便的处理Adapter里的ViewHolder绑定问题

3.运行时不会影响APP效率,使用配置方便

4.代码清晰,可读性强

下载地址:https://github.com/JakeWharton/butterknife
Butterknife插件:zelezny
插件安装

在File->Setting->Plugins中输入butterknife添加插件,然后重启AndroidStudio

插件使用

安装完插件以后,需要重启Android Studio,重启完以后,我们只需要把光标放到setContentView(R.layout.activity_main)上,然后alt+insert。对于多个需要绑定的id,省下了很多时间。我用一个gif动图来说明一下怎么使用吧

基本配置


1.在项目的project 的build.gredle 文件中添加。

implementation 'com.jakewharton:butterknife:8.8.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.0'
2.ButterKnife的绑定

①在Activity中绑定ButterKnife

在Activity中的onCreate绑定ButterKnife,我觉得最好的方式是写一个BaseActivity,在BaseActivity中完成绑定。在Activity中绑定ButterKnife必须在setContentView之后。使用ButterKnife.bind(this)进行绑定。具体实现代码如下:

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
    }
②在Fragment中绑定ButterKnife

在Fragment中绑定ButterKnife的时候,需要在onCreateView中绑定,ButterKnife会返回一个Unbinder的实例,在Fragment中绑定ButterKnife,必须在onDestroyView方法中调用unbind方法进行Fragment解绑,还有一点,在Fragment中绑定ButterKnife的使用,this不能换成getActivity,只能用this,切记切记。使用ButterKnife.bind(this, view)进行绑定。代码如下:

  @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_item, null);
        bind = ButterKnife.bind(this, view);
        return view;
    }
 
    @Override
    public void onDestroy() {
        super.onDestroy();
        //解除绑定
        bind.unbind();
    }
③在adapter中绑定ButterKnife

我们还可以在adapter中绑定ButterKnife,我们在adapter的ViewHolder中使用,在ViewHolder中添加一个构造方法,在进行new的时候将view传递进去。使用ButterKnife.bind(this, view)进行绑定。代码如下:

  public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder vh=null;
        if (convertView==null){
            convertView=  View.inflate(context,R.layout.activity_item,null);
            vh=new ViewHolder(convertView);
            convertView.setTag(vh);
        }else{
          vh= (ViewHolder) convertView.getTag();
        }
        vh.mIvPhoto.setImageResource(R.drawable.tupain);
        vh.mTvResult.setText(mDatas.get(position));
        return convertView;
    }
 
    class ViewHolder{
        @BindView(R.id.iv_photo)
         ImageView mIvPhoto;
        @BindView(R.id.tv_result)
         TextView mTvResult;
        public ViewHolder(View view) {
            ButterKnife.bind(this,view);
        }
    }


ButterKnife的基本使用


我们在这里讲一下ButterKnife的基本使用,这里大体列举一下,具体的使用方式大家可以去官方下载看一下。

1.绑定View

①控件id注解:@BindView()

@BindView(R.id.tv_result)
public TextView mTvResult;
@BindView(R.id.iv_photo)
public ImageView mIvPhoto;
②布局中多个id注解:@BindViews()

public class MainActivity extends Activity {  
 
    @BindViews({ R2.id.button1, R2.id.button2,  R2.id.button3})  
    public List

你可能感兴趣的:(Android中ButterKnife的使用)