Android自定义含有CheckBox的Adapter遇到的问题版权所有,欢迎转载,转载请注明 : SinFrancis ?http://mdev.
Android自定义含有CheckBox的Adapter遇到的问题
版权所有,欢迎转载,转载请注明 : SinFrancis ?http://mdev.cc?
?
在做含有CheckBox的Adapter的可能会遇到的问题:
?
1.、ListView item中加入checkbox后onListItemClick 事件无法触发。
原因:checkbox的优先级高于ListItem于是屏蔽了ListItem的单击事件。
解决方案:设置checkbox的android:focusable="false"
?
2、选择其中的checkbox,当滚动ListView的时候,会出现一些Checkbox选择错位的现象,
原因:为记住Checkbox的选择状态
解决方案:当选择Checkbox的时候,记下其状态,然后在getView方法中进行设置
代码如下:
Object b = (Object ) getItem(position);if (b != null) {if(selectedSet.contains(b)){viewHolder.checkBox.setChecked(true);}else{viewHolder.checkBox.setChecked(false);}}?<p>?</p><p>在做含有CheckBox的Adapter的可能会遇到的问题:</p>
<p><span style="line-height: 18px; font-family: Arial,sans-serif,Helvetica,Tahoma;">
<p style="padding: 0px; margin: 0px;">?</p>
<p style="padding: 0px; margin: 0px;">1.、ListView item中加入checkbox后onListItemClick 事件无法触发。</p>
<p style="padding: 0px; margin: 0px;">原因:checkbox的优先级高于ListItem于是屏蔽了ListItem的单击事件。</p>
<p style="padding: 0px; margin: 0px;">解决方案:设置checkbox的android:focusable="false"</p>
<p style="padding: 0px; margin: 0px;">?</p>
<p style="padding: 0px; margin: 0px;">2、选择其中的checkbox,当滚动ListView的时候,会出现一些Checkbox选择错位的现象,</p>
<p style="padding: 0px; margin: 0px;">原因:为记住Checkbox的选择状态</p>
<p style="padding: 0px; margin: 0px;">解决方案:当选择Checkbox的时候,记下其状态,然后在getView方法中进行设置</p>
<p style="padding: 0px; margin: 0px;">代码如下:</p>
<p style="padding: 0px; margin: 0px;">?</p>
<pre name="code" class="java">Object b = (Object ) getItem(position);
if (b != null) {
if(selectedSet.contains(b)){
viewHolder.checkBox.setChecked(true);
}else{
viewHolder.checkBox.setChecked(false);
}
}</pre>
</span></p>
<p>? 可以简化一下代码: </p>
<p>if(b != null){</p>
<p>??? viewHolder.checkBox.setChecked(selectedSet.contains(b));</p>
<p><span style="line-height: 18px; font-family: Arial,sans-serif,Helvetica,Tahoma;">}</span></p>
<p>为什么还要判断IF?</p>
<p>?</p>
<p>错位的情况我也出现过。我将监听事件写在 这句代码之前就没有出现错位的情况。 不知道是否适用你?</p>
</div>
<p>?</p>
