解决Checkbox滑动错乱问题

原创 2016年05月31日 15:28:48

我自己找了很多的解决滑动错乱的问题,我发现好多都是用的map来保存的状态,所以想了个其他的方法进行操作。总体来说非常的简单,自己看看代码就明白了

public class MainActivity extends Activity {
private ListView mlv;
private MyListViewAdapter mAdapter;
private ArrayList<Bean>list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        list = new ArrayList<Bean>();
        //模拟从网络获取数据
        for(int i=0;i<24;i++){
        Bean bean  = new Bean();
        bean.name="item"+i;
        bean.isChecked=false;
        list.add(bean);
        }
        mAdapter = new MyListViewAdapter(MainActivity.this, list);
        mlv.setAdapter(mAdapter);
        //到这里就一切OK了!!!
        mlv.setOnItemClickListener(new OnItemClickListener() {


@Override
public void onItemClick(AdapterView<?> parentView, View view, int position,
long arg3) {
boolean isChecked= list.get(position).isChecked;
list.get(position).isChecked=!isChecked;
mAdapter.notifyDataSetChanged();
}
});
    }
    private void initView(){
    mlv=(ListView) findViewById(R.id.listView1);
    }
}


配置的adapter

public class MyListViewAdapter extends BaseAdapter {
private Context mContext;
private List<Bean>mList;
private ViewHolder holder;
public MyListViewAdapter(Context context , List<Bean>list){
this.mContext=context;
this.mList=list;
}


@Override
public int getCount() {
return mList.size();
}


@Override
public Object getItem(int position) {
return mList.get(position);
}


@Override
public long getItemId(int position) {
return position;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView==null) {
holder=new ViewHolder();
convertView=LayoutInflater.from(mContext).inflate(R.layout.item_custom_cb, null);
holder.mCB=(CheckBox) convertView.findViewById(R.id.checkBox1);
convertView.setTag(holder);
}else{
holder=(ViewHolder) convertView.getTag();
}
//每次显示item的时候首先对选中状态进行判断
if (mList.get(position).isChecked) {
holder.mCB.setChecked(true);
}else{
holder.mCB.setChecked(false);
}
holder.mCB.setText(mList.get(position).name);
return convertView;
}
public static class ViewHolder{
CheckBox mCB;
}
}

自定义的bean

public class Bean {
//isChecked:在后台解析的基础上添加一个字段,用来做是否选中的判断
public boolean isChecked;
public String name;
}

解决checkbox在滑动时选中状态错乱的问题

现象:listview 中,如果有10项,其中手机屏幕显示1-6项,其余的7-10项在屏幕中不可见,得向下滚动后才能看到,这个时候,如果选中1、2项,再滚动到7-10项,之后再滚动回来1-6项,就发现...
  • xuefu_78
  • xuefu_78
  • 2016年08月26日 14:14
  • 1105

ListView嵌套CheckBox滑动时CheckBox选中状态错乱

在讨论这个问题之前应该先了解ListVIew的复用机制 ListView复用的原理:ListView中的每一个Item显示都需要Adapter调用一次getView的方法,这个方法会传入一个conv...
  • qq_20521573
  • qq_20521573
  • 2016年09月25日 01:07
  • 4248

完美解决ListView和CheckBox焦点冲突及复用时CheckBox错位等一系列问题

完美解决了ListView和CheckBox焦点冲突及复用时CheckBox错位等一系列问题,讲解了如何在ListView下拉刷新和上拉加载时保存CheckBox的选中状态并且实现了对CheckBox...
  • u010933680
  • u010933680
  • 2015年11月01日 21:17
  • 6061

手机html页面对checkbox控件需要使用click事件,而不是tap

楼主曾经遇到过坑,用js去手动改变checkbox的checked属性状态,但是当用户用手去点击checkbox时,js的修改标签代码便失效了,研究后发现,checkbox是自带check事件的,判断...
  • xiaoguang44
  • xiaoguang44
  • 2016年05月13日 18:34
  • 1973

ListView滑动时CheckBox出现数据错乱

看了几篇觉得这篇讲的是最深入的(http://blog.csdn.net/a910626/article/details/45850151),特地转过来备忘!另外几篇也不错,附上看看:http://w...
  • songshiMVP1
  • songshiMVP1
  • 2016年05月20日 22:05
  • 966

RecyclerView与CheckBox结合使用错乱问题

RecyclerView是当前流行的数据视图展示框架 但是,当我们使用RecyclerView与CheckBox结合使用时,碰撞出了勾选错乱的火花 那么接下来我们就来粗暴的解决掉这个小火星 首先,...
  • DANGEROUS_HUI
  • DANGEROUS_HUI
  • 2017年10月24日 11:11
  • 186

解决ListView中滑动复用时控件的混乱问题

这个问题恐怕很多人在刚开始使用ListView时都接触到过,就是比如listview的item中有一个Button或一个CheckBox,你明明点击按键改变了他的背景图片或者问题,又或者勾选了Chec...
  • verzqli
  • verzqli
  • 2015年12月14日 18:37
  • 4802

RecyclerView+checkbox滑动导致复用混乱问题的解决方案

最近做一个项目,里面遇到了一个小问题吧我觉得这些问题也是我们时常会用到的。我们需要在用户新注册的时候为他推荐一些人来选择关注。用到了RecyclerView 那么在RecyclerView的Adapt...
  • qq_16265959
  • qq_16265959
  • 2016年11月29日 20:28
  • 1450

解决:ListView+CheckBox 点击错乱问题

之前用过ExpandableLIstView,数据刷新状态的错乱发现都是在于没有给指定的控件设置值ListView与CheckBox点击错乱也是同样的原理关键代码部分: //设置选中状态 ...
  • u011663865
  • u011663865
  • 2016年11月02日 15:07
  • 323

ListView里的CheckBox选中后滑动时候选择错位的原因.

因为现在做的APP,属于OA员工管理类型的.所以肯定会包含批量选择. 在批量选择时,遇到了很多BUG.在这不得不承认小白就是小白.很简单的问题,就是差自己记录下来了. 尤其是选中后滑动,check...
  • a940320099
  • a940320099
  • 2016年03月25日 15:58
  • 1037
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决Checkbox滑动错乱问题
举报原因:
原因补充:

(最多只允许输入30个字)