checkbox扩大点击范围以及一个监听器处理多个点击事件


1.现在不用在checkbox的id上面去监听点击直接在它的父类regist_showpassword_li监听

2.程序中控制checkbox的点击id添加一个点击的标识

 private int showPwdSign = -1; // 标识用于记住密码扩大checkbox点击范围 -1代表没有点击1代表点击


regist_showpassword=(CheckBox)findViewById(R.id.regist_showpassword);

regist_showpassword_li = (LinearLayout)findViewById(R.id.regist_showpassword_li);

 regist_showpassword_li.setOnClickListener(commonClickListener);

方法一:

//这是的处理一个监听器处理多个监听事件

private OnClickListener commonClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.regist_showpassword_li:
if (showPwdSign == -1) {
showPwdSign =1;
regist_showpassword.setChecked(true);
regist_userpwd_et.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
regist_confirm_pwd_et.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
}else {
showPwdSign =-1;
regist_showpassword.setChecked(false);
regist_userpwd_et.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
regist_confirm_pwd_et.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
break;
default:
break;
}
}
};


<!-- 布局文件样式-->

<LinearLayout
   android:id="@+id/regist_showpassword_li
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentLeft="true"
           android:gravity="center_vertical"
           android:orientation="horizontal">
      <CheckBox
           android:id="@+id/regist_showpassword"
           android:layout_width="15dp"
           android:layout_height="15dp"
           android:button="@null"
           android:checked="false"
           android:background="@drawable/member_register_showpwd_checkbox_selector"/>
      <TextView
       android:id="@+id/text1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_marginLeft="7dp"
           android:text="@string/member_register_show_pwd_tv"
           android:textColor="#9f9f9f"
           android:textSize="12sp" />
</LinearLayout>



//方法二:

直接获得复选框的是否点击的判断条件,获得listView中的wareid 直接改变数据源,最后在finish中的保存xml文件


private OnClickListener shopcar_item_checkbox_ll_click_lis = new OnClickListener() {
@Override
public void onClick(View v) {
int index = Integer.parseInt(String.valueOf(v.getTag()));
CheckBox btnAdd = (CheckBox) v.findViewById(R.id.shopcar_item_checkbox);
if (btnAdd.isChecked()) {
btnAdd.setChecked(false);
productList.get(index).put("submit_sign", "false");
}else {
btnAdd.setChecked(true);
productList.get(index).put("submit_sign", "true");
}
CommonConstant.SHOPCAR_LIST = productList;
}
};



@Override
protected void onDestroy() {
//销毁的时候写入一次xml文件
FileUtil.xmlWriter(context, "", "", CommonConstant.SHOPCAR_LIST);
super.onDestroy();
}



如果CheckBox和Item点击事件不在同一个Activity中,那么可以考虑通过广播的方式来实现。具体步骤如下: 1. 在Adapter中注册广播接收器 在Adapter中注册广播接收器,在接收到广播时处理相应的逻辑。例如: ``` public class MyAdapter extends BaseAdapter { private Context mContext; public MyAdapter(Context context) { mContext = context; // 注册广播接收器 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("com.example.action.ITEM_CLICK"); mContext.registerReceiver(mReceiver, intentFilter); } private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if ("com.example.action.ITEM_CLICK".equals(intent.getAction())) { // 处理Item的点击事件 int position = intent.getIntExtra("position", -1); // ... } } }; } ``` 2. 在CheckBox点击事件中发送广播 在CheckBox点击事件中发送广播,将需要传递的参数放入Intent中。例如: ``` checkBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 处理CheckBox点击事件 // ... // 发送广播 Intent intent = new Intent("com.example.action.ITEM_CLICK"); intent.putExtra("position", position); mContext.sendBroadcast(intent); } }); ``` 这样,当点击CheckBox时,会发送广播到注册了相应广播接收器的Adapter中,从而处理Item的点击事件。需要注意的是,在不需要使用广播时需要在Adapter中解除广播接收器的注册,避免内存泄漏。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值