`

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);
			}
	
		}
 

分享到:
评论
7 楼 罡风笑 2010-11-04  
<div class="quote_title">sinfrancis 写道</div>
<div class="quote_div">
<p><span style="font-size: 13px; line-height: 17px; font-family: Helvetica,Arial,sans-serif; color: #ff0000;">版权所有,欢迎转载,转载请注明 : SinFrancis  <a style="color: #e9650e; text-decoration: underline;" href="http://mdev.cc/">http://mdev.cc</a> </span></p>
<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>
6 楼 sinfrancis 2010-10-27  
hshm 写道
楼主,你的代码中:selectedSet是什么。这段代码放在哪里?


selectedSet 是一个set集合 用于存放选择的对象的
类成员变量
5 楼 hshm 2010-10-26  
LZ,能不能发个稍微完整的代码看下
4 楼 hshm 2010-10-26  
楼主,你的代码中:selectedSet是什么。这段代码放在哪里?
3 楼 aliang1121 2010-08-25  
请问getView()方法是在哪里呢?
2 楼 sinfrancis 2010-07-10  
mingkg21 写道
太OUT了,我的代码里早就写了,都不去看

你不给我看 我怎么看呢
1 楼 mingkg21 2010-07-09  
太OUT了,我的代码里早就写了,都不去看

相关推荐

    Android 实现自定义多级树控件和全选与反选的效果

    对于多级树的显示其实就是通过数据中各个节点的关系,通过不同的缩进来达到树的效果。而数据中主要要把握id,父节点pId,name的关系,来显示其效果。实例详细的实现的多级树和全选与反选的过程

    Adapter实现ListView带多选框等状态的自定义控件的注意事项

    Android本身为ListView提供了几个方便的Adapter,比如ArrayAdapter、SimpleCurrentAdapter等等。但是为了实现更复杂的列表视图和控制,一般都要继承BaseAdapter来实现自己的Adapter。 我需要的ListView是如图一样的...

    Android中ListView绑定CheckBox实现全选增加和删除功能(DEMO)

    ListView控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adapter的用法,加了很多的判断等等等等….我们先来看看实现的效果吧! 好的,我们新建一个项目LvCheckBox ...

    Android开发案例驱动教程 配套代码

    8.4.1 Android线程应用中的问题与分析 164 8.4.2 Message和MessageQueue 169 8.4.3 Handler 169 8.4.4 Looper和HandlerThread 172 本章小结 178 第9章 Activity和Intent 179 9.1 Activity 179 9.1.1 创建...

    Android简明应用程序开发[原创]

    4.1.5自定义Adapter 150 4.1.6 ListActivity 160 二、HorizontalScrollView 163 三、SlidingDrawer 166 四、TabHost和TabWidget 173 五、Dialog 181 5.5.1 Dialog 181 5.5.2 AlterDialog ...

    java安卓仿微信聊天软件源码-Android_open_project:Android开源项目,旨在搜集平常工作中遇到和可能需要用到的一些好

    Android开源项目,旨在搜集平常工作中遇到和可能需要用到的一些好的开源项目。 系统控件 TextView  *  * ImageView  * EditText Button  *   SwitchButton CheckBox ProgressBar/SeekBar SeekBar ScrollView ...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    5.11 制作有图标的文件资源管理器——自定义Adapter对象 5.12 还原手机默认桌面——重写clearWallpaper方法 5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    5.11 制作有图标的文件资源管理器——自定义Adapter对象 5.12 还原手机默认桌面——重写clearWallpaper方法 5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与...

    Android基础知识详解

    自定义Adapter来建立复杂的列表项 99 动态添加、删除ListView列表项 102 改变ListView列表项选中状态的背景颜色 102 可展开的列表组件 102 数据的存取 103 SharePreferences 6.1 103 文件的存储6.2 103 SQLite数据库...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    5.11 制作有图标的文件资源管理器——自定义Adapter对象 5.12 还原手机默认桌面——重写clearWallpaper方法 5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与...

    Google Android SDK开发范例大全的目录

    5.11 制作有图标的文件资源管理器——自定义Adapter对象 5.12 还原手机默认桌面——重写clearWallpaper方法 5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    5.11 制作有图标的文件资源管理器——自定义Adapter对象 5.12 还原手机默认桌面——重写clearWallpaper方法 5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与...

    Android 中ListView的Item点击事件失效的快速解决方法

    在平常的开发过程中,我们的ListView可能不只是简单的显示下文本或者按钮,更多的是显示复杂的布局,这样的话,我们就得自己写布局和自定义adapter了,一般是继承于BaseAdapter,示例代码见下方。写ListView的点击...

    Google Android SDK 开发范例大全01

    5.11 制作有图标的文件资源管理器——自定义Adapter对象 5.12 还原手机默认桌面——重写clearWallpaper方法 5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与...

    Google Android SDK 开发范例大全02

    5.11 制作有图标的文件资源管理器——自定义Adapter对象 5.12 还原手机默认桌面——重写clearWallpaper方法 5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与...

    Google+Android+SDK开发范例大全

    4.4 我同意条款——CheckBox的isChecked属性 4.5 消费券采购列表——多选项CheckBox的应用 4.6 向左或向右——RadioGroup组与onCheckedChanged事件 4.7 专业相框设计——ImageView的堆栈应用 4.8 自定义下拉菜单模式...

    Google Android sdk 开发范例大全 部分章节代码

    5.11 制作有图标的文件资源管理器——自定义Adapter对象 5.12 还原手机默认桌面——重写clearWallpaper方法 5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与...

Global site tag (gtag.js) - Google Analytics