ListView配合CheckBox出现position位置错误的解决

      最近做checkBox和ListView配合使用,想把position的位置传入到 checkBox的onCheckedChanged,于是我就在getView的时候,
把position通过checkbox的setTag给设置进去,然后从onCheckedChanged里面通过getTag取出来,可是有时候,position会出现错误。
百思不得其解。   
     后来想,设置这个值的地方和获取这个值的地方加入打印。发现值都是对的。后来,灵光一现,发现在getView的时候,调用了checkbox的
setChecked,代码如下:

public View getView(int position, View convertView, ViewGroup parent) {
         ......
         ......
          holder.checkBox.setChecked(ischeck);
        holder.checkBox.setTag(R.id.checkbox, position);

        
}

    问题就在于我们先调用了setChecked,这个调用会触发onCheckedChanged,这个时候,我们的最新数据,还没通过setTag设置进去,
所以,就会造成在onCheckedChagned获取的数据不对。

    这个问题,告诉我,写代码的时候,一定要注意运行的流程,特别是有回调函数的情况。





你可能感兴趣的:(ListView)