Java Android-从ListView中删除项目,但不从数据库中删除
所以我有一个小问题,我的代码从ListView中删除ListView行,但每次我关闭应用程序,然后重新打开它时,删除的行会再次填充ListView 以下是DatabaseHelper类中delete方法的代码:Java Android-从ListView中删除项目,但不从数据库中删除,java,android,sqlite,Java,Android,Sqlite,所以我有一个小问题,我的代码从ListView中删除ListView行,但每次我关闭应用程序,然后重新打开它时,删除的行会再次填充ListView 以下是DatabaseHelper类中delete方法的代码: public void obrisiTrening(int id){ SQLiteDatabase db = this.getWritableDatabase(); db.delete(DBKonstante.TABLE_NAME, DBKonstant
public void obrisiTrening(int id){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(DBKonstante.TABLE_NAME, DBKonstante.KEY_ID + "=?", new String[]{String.valueOf(id)});
db.close();
下面是我从数据库中删除ListView行和记录的代码:
rec_WorkoutItemsList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, final int i, long l) {
final Dialog dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.dialog_delete);
final TextView tvDialogDelete = (TextView) dialog.findViewById(R.id.tvDialogDelete);
tvDialogDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final DBPodatci infoData = dbPodatci.get(i);
dba = new DBHandler(MainActivity.this);
int position = dbPodatci.indexOf(infoData);
dbPodatci.remove(position);
DBPodatci podatki = new DBPodatci();
final int idToDelete = podatki.getItemId();
dba.obrisiTrening(idToDelete);
dba = new DBHandler(MainActivity.this);
dba.obrisiTrening(i);
rec_WorkoutItemsList.setAdapter(vjezbaAdapter);
vjezbaAdapter.notifyDataSetChanged();
dialog.dismiss();
}
});
dialog.show();
return false;
}
});
}不确定这是在做什么
dba.obrisiTrening(idToDelete);
dba = new DBHandler(MainActivity.this);
dba.obrisiTrening(i);
你只需要这个
final TextView tvDialogDelete = (TextView) dialog.findViewById(R.id.tvDialogDelete);
final DBHandler dba = new DBHandler(MainActivity.this);
tvDialogDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final DBPodatci infoData = dbPodatci.get(i);
final int idToDelete = infoData.getItemId();
dbPodatci.remove(i);
dba.obrisiTrening(idToDelete);
vjezbaAdapter.notifyDataSetChanged();
dialog.dismiss();
注意:这里不应该使用Arraylist&ArrayAdapter。。。您正在使用一个数据库,所以CursorAdapter是您想要的尝试调试我认为您从listPost DBPodatci这个类中得到了错误的id,这样我们就可以检查此行返回的podatki.getItemId是在第一个postfinal DBPodatci infoData=DBPodatci.geti;中的;。你有一个随机i变量。i的值与单击项在列表中的位置无关。首先尝试确定位置。实现一个MClickListener,它为您提供单击项目的位置。
final TextView tvDialogDelete = (TextView) dialog.findViewById(R.id.tvDialogDelete);
final DBHandler dba = new DBHandler(MainActivity.this);
tvDialogDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final DBPodatci infoData = dbPodatci.get(i);
final int idToDelete = infoData.getItemId();
dbPodatci.remove(i);
dba.obrisiTrening(idToDelete);
vjezbaAdapter.notifyDataSetChanged();
dialog.dismiss();