android listview的单选事件

自定义listview的布局中用的是:
<CheckBox
android:id="@+id/im_pb"
android:layout_width="17dp"
android:layout_height="17dp"
android:layout_marginRight="10dp"
android:background="@drawable/check_style"
android:button="@null"
android:visibility="gone"
android:focusable="false"></CheckBox>

check_style:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/fif" android:state_checked="true"></item>
<item android:drawable="@drawable/fif" android:state_selected="true"></item>
<item android:drawable="@drawable/fif" android:state_pressed="true"></item>
<item android:drawable="@drawable/fif_1"></item>
</selector>
因为我实现的功能是,checkbox一开始是隐藏的,点击item显示对应的checkbox,其他隐藏,所以可以不用添加点击效果,直接放个静态的就行。

然后在adapter中定义:HashMap<String, Boolean> states = new HashMap<String, Boolean>();// 用于记录每个checkbox的状态,并保证只可选一个
lv_person_bind.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
final int pos, long arg3) {

// 重置,确保最多只有一项被选中
for (String key : states.keySet()) {
states.put(key, false);
}
states.put(String.valueOf(pos), true);
notifyDataSetChanged();
}
});
}
});
boolean res = false;
if (states.get(String.valueOf(position)) == null
|| states.get(String.valueOf(position)) == false) {
res = false;
states.put(String.valueOf(position), false);
holder.cb_pb.setVisibility(View.GONE);
} else{
res = true;
holder.cb_pb.setVisibility(View.VISIBLE);
}
holder.cb_pb.setChecked(res);
这样效果就实现了···
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值