ButterKnife之一:Activity中ButterKnife核心常用功能使用(替代findviewbyid,替代OnClickListener以及绑定多个id监听事件)

ButterKnife是一个注解类,ButterKnife开源框架以其强大的view绑定和click事件处理功能,大大减少代码量,节省开发时间,提高开发效率,而且ButterKnife在adapter中的使用也方便的处理了adapter中ViewHodler的绑定问题,下面就学习内容做简单记录:

1、Activity中使用ButterKnife注解类替代findviewbyid绑定view

常规绑定view:

Button mBtn=(Button)findViewById(R.id.btn);

使用ButterKnife绑定view:

    @InjectView(R.id.item_goods_name)
    TextView mGoodsName;
    @InjectView(R.id.item_goods_price)
    TextView mGoodsPrice;
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_goods);
        ButterKnife.inject(this);
        //初始化组件
        initView();
        //初始化数据
        initData();

    }

简单解释:ButterKnife的代替findviewbyid的使用方法,首先要在“setContentView(R.layout.activity_add_goods);”后面添加“ButterKnife.inject(this);”。然后,在定义声明组件的时候使用注解类绑定id,如:“ @InjectView(R.id.item_goods_price)
    TextView mGoodsPrice;”

需要注意的是extView mGoodsPrice不能使用private或者static修饰

2、Activity中使用ButterKnife注解类替代setOnclickListener点击事件(同样也可以替代listview的OnItemClick的方法以及CheckBox的OnCheckedChanged事件)

常规监听事件的处理方式:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);
        
        Button mBtn=(Button)findViewById(R.id.btn);
        mBtn.setOnClickListener(this);
    }
@Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.frist_goods_image:
              //事件处理
               break;
            default:
                break;
        }

ButterKnife处理监听事件:

@OnClick(R.id.item_goods_img)
    void ImageClick(View view){//view可以省略
        //处理点击事件
}

简单解释:

将需要处理点击事件的组件直接绑定在OnClick上,调用对应ImageClick方法处理监听事件,其中view可以省略,同样需要注意ImageClick方法不能被private或者static修饰,个人感觉,如果有多个监听事件,则需要重复多次使用注解,有些繁琐。

拓展:

同样ButterKnife可以使用@OnItemClick替代listview中的setOnItemClickListener监听方法,使用@OnCheckedChanged替代ChekBox中的setOnCheckedChanged监听方法,用法与@OnClick一样

3、Activity中使用ButterKnife中@OnClick可以一次指定多个id,为多个view绑定一个事件处理方法

ButterKnife多view绑定同一个监听事件:

@OnClick({R.id.item_goods_img,R.id.item_goods_name,R.id.item_goods_price})
    void mulitOnclick(View view){
      Toast.makeText(this,"共同处理方法",Toast.LENGTH_SHORT).show();  
}

简单解释:当多个view的处理时间一致是,可以将多个监听事件对应的view的id绑定在一个@OnClick上,方法如上,需要注意的是方法不能被private或者static修饰,view可以省略

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值