我有一个自定义列表视图,其中包含数据库中的数据。
在我的列表适配器中,我设置了onlongclicklistener
来删除数据库中的项目:
row.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle(context.getResources().getString("TITEL"));
alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "NO",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "YES",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String delete = "DELETE FROM "+DatabaseHelper.DATABASE_TABLE+" " +
"WHERE "+DatabaseHelper.COLUMN_ID+" = "+databaseListItems.getID();
sqlHandler = new DatabaseHandler(context);
sqlHandler.executeQuery(delete);
dialog.dismiss();
}
});
alertDialog.show();
return false;
}
});
项目将在数据库中删除,但不会在列表视图中删除。如果我重新加载列表视图,该项目将消失 删除后如何重新加载列表视图?
答案 0 :(得分:0)
您应该按照以下两个步骤进行操作:
1)当您确认删除时,您必须从适配器中使用的对象中删除该项以填充列表
2)然后,您必须致电notifyDatasetChanged()
如果您不从适配器中删除该项,则会在名为notifyDatasetChanged()
的列表中再次加载该项
答案 1 :(得分:0)
执行数据库查询后,从arraylist中删除该项目,使用此
填充列表视图myList.delete(position);
并致电
notifyDatasetChanged();
获取项目位置,您可以在listview上设置setOnItemLongClickListener。