`

ListView中Checkbox的使用

 
阅读更多

 

 

 

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记录选中状态而已

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics