2017-03-31 276 views
0

所以我有一個小問題,我的代碼從ListView刪除ListView行,但每次我殺了應用程序,然後重新打開它「已刪除」的行再次填充ListView。Android - 從ListView中刪除項目但不從數據庫中刪除項目

下面是DatabaseHelper類刪除方法的代碼:

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; 
     } 
    }); 

DB PODATCI

public class DBPodatci { 
    public String odabraneVjezbe, recordDate; 
    public int itemId; 

    public String getOdabraneVjezbe() { 
     return odabraneVjezbe; 
    } 

    public void setOdabraneVjezbe(String odabraneVjezbe) { 
     this.odabraneVjezbe = odabraneVjezbe; 
    } 

    public String getRecordDate() { 
     return recordDate; 
    } 

    public void setRecordDate(String recordDate) { 

    this.recordDate = recordDate; 
} 

public int getItemId() { 
    return itemId; 
} 

public void setItemId(int itemId) { 
    this.itemId = itemId; 
} 

}

+0

嘗試調試我認爲你是從你的列表中得到錯誤的ID –

+0

Post'DBPodatci'這個類,以便我們可以檢查'podatki.getItemId()'這一行返回什麼 –

+0

它在第一篇文章 – DaxHR

回答

1

不知道這是試圖做什麼。

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的是你想要什麼