这是由于gerview 的 Recycler 原理。详情参考以下link
http://www.cnblogs.com/xiaowenji/articles/1900579.html==============================================
publicView getView(int position, View convertView, ViewGroup parent){
ViewHolder holder;
if(convertView ==null){
convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
holder =new ViewHolder();
holder.c=(TextView) convertView.findViewById(R.id.check);
convertView.setTag(holder);
}else{
holder =(ViewHolder) convertView.getTag();
}
c.setcheck(false)
return convertView;
}
staticclass ViewHolder {
Checkbox c;
}
===============
大体的代码思路是这样,有bug的话自己修修就行了。
有任何错误 仅供参考
http://www.cnblogs.com/xiaowenji/articles/1900579.html==============================================
publicView getView(int position, View convertView, ViewGroup parent){
ViewHolder holder;
if(convertView ==null){
convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
holder =new ViewHolder();
holder.c=(TextView) convertView.findViewById(R.id.check);
convertView.setTag(holder);
}else{
holder =(ViewHolder) convertView.getTag();
}
c.setcheck(false)
return convertView;
}
staticclass ViewHolder {
Checkbox c;
}
===============
大体的代码思路是这样,有bug的话自己修修就行了。
有任何错误 仅供参考
if (posion ==0) //这是一个简单的逻辑判断,复杂的你自己把这判断逻辑改一下就行了
{
c.setcheck(true);
}
else{
c.setcheck(fasle);
}当然这样写有点绝对 ,具体的哪个checkbox 需要设置成true和false需要根据你的逻辑来判断了。我不知道你要的具体要求怎么样。
if (select.contain(new integer(postion))) //select 是一个集合,里面放着所有选中checkbox 的位置
{
c.setcheck(true);
}
else
{
c.setcheck(fasle);
}
方法很多 你也可以自己考虑下
if (posion ==0)
你在别的项中修改别的项是办不到的 c.setcheck(fasle);更不行了控件ID都是一个。在listview中设置了又要重新读取的楼主我遇到了这个问题,我的解决方案是。数据存入数据库添加一条数据int int =1就是c.setcheck(fasle)int=2就是c.setcheck(true);
每次选checkbox的时候你给他个事件重新读取数据库就可以了,这个绝对可以。。
publicView getView(int position, View convertView, ViewGroup parent){
ViewHolder holder;
convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
holder =new ViewHolder();
holder.c=(TextView) convertView.findViewById(R.id.check);
c.setOnCheckedChangeListener(new OnCheckedChangeListener(){ public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if(isChecked){
buttonView.setChecked(false);
}else{
buttonView.setChecked(true);
}
}
});
convertView.setTag(holder);
return convertView;
}
staticclass ViewHolder {
Checkbox c;
}