Butter Knife注解框架的点点滴滴

Butter Knife这个框架实际上很多人很早就会了,或者说听说了,这里我就不再多赘述了,只是来教一下大家如何去快速上手和使用

一.配置

我们在项目app/build.gradle中添加依赖

implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

二.绑定

要想使用,就必须绑定,这里介绍几种常见的场景

  • 1.Activity
  • 2.Fragment
  • 3.Adapter

在Activity中每次使用都需要bind,所以,我们来写一个基类

public class BaseBindActivity extends AppCompatActivity {

    @Override
    public void setContentView(View view) {
        super.setContentView(view);
        ButterKnife.bind(this);
    }

    @Override
    public void setContentView(int layoutResID) {
        super.setContentView(layoutResID);
        ButterKnife.bind(this);
    }

    @Override
    public void setContentView(View view, ViewGroup.LayoutParams params) {
        super.setContentView(view, params);
        ButterKnife.bind(this);
    }
}

这里可以看出,我是重写了setContentView来使用bind,这是因为bind方法一定要在setContentView之后使用

而在Fragment中,我们先来看一份代码

public class TestFragment extends Fragment {

    private Unbinder mUnbinder;

    @Override
    public View onCreateView(LayoutInflater inflater,  ViewGroup container,  Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_test,null);
        mUnbinder = ButterKnife.bind(this,view);
        return view;
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        mUnbinder.unbind();
    }
}

因为Fragment的特殊性,所以需要解绑,在bind的时候回返回一个Unbinder对象,通过他,在onDestroyView中解绑即可

如果是adapter中

    class ViewHolder {

        public ViewHolder(View view) {

            ButterKnife.bind(this,view);
        }
    }

三.使用

public class MainActivity extends BaseBindActivity {

    //findViewById
    @BindView(R.id.mTextView)
    TextView mTextView;

    @BindView(R.id.mButton)
    Button mButton;

    @BindString(R.string.app_name)
    String mString;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mTextView.setText(mString);
    }

    //OnClickListener
    @OnClick(R.id.mButton)
    public void clickButton(){
        mTextView.setText("onclick");
    }

    //OnLongClickListener
    @OnLongClick(R.id.mButton)
    public boolean longClickButton(){
        mTextView.setText("long click");
        return true;
    }
}

我这里只是列举一些常用的,比如BindView,就是findViewById,还有点击事件等,这些可以翻阅资料所得

四.插件

一件生成的插件【Android ButterKnife Zelezny】

这里写图片描述

案例下载

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘某人程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值