1 Listview item中加入checkbox后onListItemClick 事件无法触发
2 实现点击item则选中checkbox
3 item重用的时候,checkbox选中状态会混乱,需要用另一个容器记录复选框的选中状态
问题1原因:
checkbox的优先级高于ListItem于是屏蔽了ListItem的单击事件。
解决:android:focusable="false" 这样item的点击事件可以正常
问题2解决:
1 问题1解决的基础上添加android:clickable="false" ,并且checkbox不能设置单击监听
2 设置background的state_pressed状态改变,虽然触发了按下状态,但是复选框其实并没有选中
所以必须在item单击事件中设置复选框选中或者取消选中,调用toggle方法
个人认为:点击item的时候checkbox同时会触发state_pressed状态改变,但并没有
触发checked和selected的事件
isFocusableInTouchMode 属性为触摸的时候是否获取焦点,这里是否设置个人感觉没大用处
问题3解决:
在adapter 中设置一个集合(Map或者Set都行)记载item中复选框的选中状态,每次getView的时候利用这个集合设置
复选框是否选中,每次操作的时候要同步更改集合的状态
个人认为就是给每个checkbox记录选中状态而已