论坛首页 移动开发技术论坛

Android自定义含有CheckBox的Adapter遇到的问题

浏览 8102 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-06-23  

版权所有,欢迎转载,转载请注明 : 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);
			}
	
		}
 

   发表时间:2010-07-09  
太OUT了,我的代码里早就写了,都不去看
0 请登录后投票
   发表时间:2010-07-10  
mingkg21 写道
太OUT了,我的代码里早就写了,都不去看

你不给我看 我怎么看呢
0 请登录后投票
   发表时间:2010-08-25  
请问getView()方法是在哪里呢?
0 请登录后投票
   发表时间:2010-10-26  
楼主,你的代码中:selectedSet是什么。这段代码放在哪里?
0 请登录后投票
   发表时间:2010-10-26  
LZ,能不能发个稍微完整的代码看下
0 请登录后投票
   发表时间:2010-10-27   最后修改:2010-10-27
hshm 写道
楼主,你的代码中:selectedSet是什么。这段代码放在哪里?


selectedSet 是一个set集合 用于存放选择的对象的
类成员变量
0 请登录后投票
   发表时间:2010-11-04  
sinfrancis 写道

版权所有,欢迎转载,转载请注明 : 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);
			}
	
		}

  可以简化一下代码:

if(b != null){

    viewHolder.checkBox.setChecked(selectedSet.contains(b));

}

为什么还要判断IF?

 

错位的情况我也出现过。我将监听事件写在 这句代码之前就没有出现错位的情况。 不知道是否适用你?

 

0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics