一直不明白listview中的复用,为什么会出现,项目多了。点击同一行的按钮,操作的不是指定行的对象。
仔细研读了代码,突然明白了。因为复用了,导致了position改变了。
伪码
if(convertview == null)
{
convertview = new xxview();
convertview.buttonone = find( R.id.xxx);
convertview.buttonone.onsetclick(...
(View v){
delete(position);
}
)
}
红字部分是错误的,因为这个position是view项目在看到的时候创造的,不是数据本身的。
所以我认为正确的,应该是
convertview.buttonone.onsetclick(...
(View v){
int mypostion = (int)v.getTag();
delete(mypostion);
}
在赋值的时候
.buttonone.setTag(postion)