ButterKnife 懒癌患者的福音

初了解到ButterKnife的时候,其实我的内心是拒绝的,毕竟,在我的潜意识里,我更求稳不求简便,所以活该我写了好几百遍的findViewById,昨天抽空学习了一下ButterKnife,内心无比奔腾,深深感悟到了一句话,现在写findViewById流的泪,是当初拒绝新技术脑子进的水。

 

开这篇帖,记录一下学习的过程,懒癌患者请注意,为了将懒癌进行到底,在项目开启之前,确保你的AS里,是有ButterKnife Zelezny的。如果没有,没有关系,先花几分钟下载一下,如果已经下载了,你可以迅速往下滚了,那么下载过程如下:

File-->Settings...打开设置窗口

由于我这边AS是已经下载好ButterKnife Zelezny了的,所以只能给一个截图,告诉你们怎么做。继上一步打开设置窗口之后,界面如下:

选中Plugins,然后搜索ButterKnife Zelezny,选中并安装就可以了,安装好之后,需要重启AS。

 

 

接下来进入ButterKnife的正式使用,使用的第一步,在gradle中添加依赖:

 

compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'

添加之后如图:

 

添加好依赖之后,重新同步一遍,确保你的依赖是添加成功的。

 

接下来,进入到Activity,传统Activity的写法一般就是这样的:

首先就是各种控件的声明,然后就是setContentView,在initView()中写一堆的findViewById,接下来要是按钮还有个什么点击事件之类的,就一堆的点击事件也跟着出来了。但是用了ButterKnife之后,福音来了,很简单,首先,把你的各种控件的声明把你的initView(),把你的各种setOnClickListener全部屏蔽掉,然后,setContentView紧接着就绑定ButterKnife,像这样:

然后对着你的视图文件,右键,注意,要对着你的视图文件名称右键,如图:

按操作来,只有视图文件的那个名称右键选择Generrate...才会出现ButterKnife的快捷操作,点击框中的那一项:

之后出现如下弹窗:

选中你要findViewById的控件,这里我全选了,所以Element处打个勾吧,如果有点击事件,很简单对应控件屁股后面的选择框,打个勾,最后,Confirm:

自此,就差不多啦,就是这么简单对吧~

 

当然,ButterKnife同样可以在Fragment和Adapter中使用,这里也简单的介绍一下:

在Fragment中,和Activity中差不多,这里简单一个例子说明,唯一不同的时候,是最初绑定的时候,其他的使用方式一样:

 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        View addPlanView;
        addPlanView = inflater.inflate(R.layout.new_fragment_scrolllayout_x76, null);
        ButterKnife.bind(addPlanView);//绑定
        return addPlanView;
    }

 

 

 

Adapter中是这样使用的,在快捷方式中,其实是有一个Create ViewHolder的,选中它,然后确认:

可以看到代码出来了一串东西:

那么怎么在代码中使用呢,很简单,一样只需要绑定视图就OK啦:

 

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.new_gridview_item_addplan, null);
            ViewHolder vh = new ViewHolder(convertView);//重点在于这一句,绑定视图
            convertView.setTag(vh);
        } else {
            vh = (ViewHolder) convertView.getTag();
        }

        Glide.with(ctx).load(pclist.get(position).getImage_url()).transform(new GlideCircleTransform(ctx)).error(R.drawable.new_loding_failed_circular).into(vh.iv_addplan);
        vh.tv_addplan_num.setText(pclist.get(position).getSort_value() + "");
        vh.tv_addplan_name.setText(pclist.get(position).getPlan_cate_title());
        return convertView;
    }

自此,我所学到的方式,都总结完啦,有不对的地方可以留言指教~

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值