我有一个带有删除按钮的列表视图项:按下此按钮时,该行被删除。我的适配器扩展了 CursorAdapter,因为数据存储到了 sqllite 数据库中。
删除代码在自定义适配器中:
public void bindView(View view, final Context context, final Cursor c) {
ViewHolder holder = (ViewHolder)view.getTag();
if(holder == null){
holder = new ViewHolder();
holder.id = c.getInt(ID);
holder.delB = (Button)view.findViewById(R.id.delB);
final int id = holder.id;
holder.delB.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
context.getContentResolver().delete(SeriesContentProvider.SERIES_CONTENT_URI,
DBHelper.COLUMN_ID+"=?", new String[]{String.valueOf(id)});
}
});
view.setTag(holder);
}
这就是发生的事情,假设你有这个列表:
项目 1 项目 2 项目 3
我决定删除 item2,一切正常:
项目 1 项目 3
现在我删除 item3,这就是我得到的:
第 3 项
item1 被删除了!为什么?
编辑:好的,如果我首先添加一个新项目,它就会发生。无论如何,如果我添加项目,关闭应用程序,然后重新启动它就可以正常工作。我检查了一些 System.out,似乎当我添加新项目时,持有者类的 id 属性被搞砸了......