当ListView滚动时,复选框自动调用onCheckedChange函数吗?

7 浏览
0 Comments

当ListView滚动时,复选框自动调用onCheckedChange函数吗?

我有一个关于ListView的问题,列表项中包含一个复选框。当我勾选一个复选框并滚动列表时,有时候复选框会自动触发onCheckedChange事件,导致复选框的值改变!或者,当我的列表有超过9或10个项时,当我勾选第一个项时,第八或第九个项会被勾选?有人可以告诉我如何修复这个bug吗?谢谢!

list_item.xml



          

这是适配器视图:

    public View getView(int position, View convertView, ViewGroup parent) {
        Log.e(TAG, "getView");
        ViewHolder mViewHolder;
        if (convertView == null) {
            Log.e(TAG, "Inflater is inflating...");
            convertView = mInflater.inflate(R.layout.custom_list_app, null);
            mViewHolder = new ViewHolder();
            mViewHolder.checkbox = (CheckBox) convertView.findViewById(R.id.checkbox);
            mViewHolder.remove = convertView.findViewById(R.id.music_info);
            convertView.setTag(mViewHolder);
        } else {
            mViewHolder = (ViewHolder) convertView.getTag();
            Log.e(TAG, "Position: " + position + " CheckBox: " + mViewHolder.checkbox.isChecked());
        }   
        mViewHolder.checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton cb, boolean flag) {
                // TODO Auto-generated method stub
                if (flag) {
                    Log.d(TAG, "Checkbox checked");
                } else {
                    Log.d(TAG, "Checkbox un-checked");
                }
            }
        });
        return convertView;
    }

0