Android 将单元格项删除到自定义适配器中时出现错误
我有一个带有删除按钮的listview项目:当按下此按钮时,行被删除。 当数据存储到sqllite数据库中时,我的适配器扩展了CursorAdapter 删除代码已插入自定义适配器:Android 将单元格项删除到自定义适配器中时出现错误,android,Android,我有一个带有删除按钮的listview项目:当按下此按钮时,行被删除。 当数据存储到sqllite数据库中时,我的适配器扩展了CursorAdapter 删除代码已插入自定义适配器: public void bindView(View view, final Context context, final Cursor c) { ViewHolder holder = (ViewHolder)view.getTag(); if(holder == null){ h
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
我决定删除第2项,一切正常:
项目1
项目3
现在我删除了第3项,这是我得到的:
项目3
项目1被删除了!为什么?
编辑:
好的,如果我先添加一个新项目,它就会发生。无论如何,如果我添加了该项目,请关闭应用程序,然后再次启动它,它工作正常。我检查了一些System.out,似乎在添加新项时,holder类的id属性被弄乱了…解决了…问题是我将getID方法调用到holder中,所以没有注意到单元格更新:
if(holder == null){
holder = new ViewHolder();
holder.delB = (Button)view.findViewById(R.id.delB);
...
}
holder.id = c.getInt(ID); //this solved
是否有可能是ContentProvider中存在缺陷?您是否尝试过删除硬编码值作为测试?不,内容提供商可以