最火下载站首页
手机版
最火下载站
关注公众号
最火下载站

当前位置:首页 > 网络知识 > 编程开发 > 手机开发> 解决android中checkbox全部选择bug的操作

解决android中checkbox全部选择bug的操作

文章作者:网友投稿 发布时间:2012-12-27 来源:网络

存在的问题: 我们在操作全部选择list中的元素,我们最常用的方法是,遍历一下,然后把所有的checkbox都给选中,但是这有一个bug,就是,当选择后,往下拉时候,下面的都没被选中,

存在的问题:

我们在操作“全部选择”list中的元素,我们最常用的方法是,遍历一下,然后把所有的checkbox都给选中,但是这有一个bug,就是,当选择后,往下拉时候,下面的都没被选中,再往上拉的时候,上面的又会被取消选择。于是,找到一个新的解决办法,给记下来,留着以后使用。

image

解决办法

我们把选中的位置使用一个数组或者集合来记着当前选择的状态。

如果集合中包含这个item,那么我们就让他们的checkbox设置成选中状态。

我们使用set集合来做,因为set集合可以去重复。

举个例子:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com]
//一、创建一个set集合
private HashSet itemSelected=new HashSet();


//二、全部选择的点击事件
public void onClick(View v) {
int id=v.getId();
switch (id) {
case R.id.bt_new_msg:
Intent intent = new Intent(ConversationActivity.this, NewMessageActivity.class);
startActivity(intent);
break;
case R.id.bt_all_selected:
//把选中的状态加入到一个set集合
for(int i=0;iCursor cursor = (Cursor) adapter.getItem(i);
String idstr = cursor.getString(ID_COLUMN_INDEX);
itemSelected.add(idstr);
}
adapter.notifyDataSetChanged();
break;

case R.id.bt_cancel_selected:

break;
}

}

三、在显示模式的时候去判断set集合中的元素,然后设置checkbox的选中状态
//根据mode 模式设置checkbook
if(mode==DISPLAYMODE.edit){

checkBox.setVisibility(View.VISIBLE);

//checkbox是否选中的
if(itemSelected.contains(idstr)){
//选中
checkBox.setChecked(true);
}else{
//不选中
checkBox.setChecked(false);
}

}else{
checkBox.setVisibility(View.GONE);
}

上一篇: 黑莓手机的PIN和Device ID及在破解黑莓软件时的应用

下一篇: cocos2dx安卓环境,Box2d编译不过的解决方法

共有0条评论网友评论