2017-03-31 11 views
0

小さな問題があります。私のコードはListViewから行を削除しますが、アプリケーションを終了して再度開くと、削除された行がListViewに再び挿入されます。ここで Android - ListViewから項目を削除してもデータベースからは削除しないでください

はDatabaseHelperクラスのdeleteメソッドのコードです:

public void obrisiTrening(int id){ 
     SQLiteDatabase db = this.getWritableDatabase(); 
     db.delete(DBKonstante.TABLE_NAME, DBKonstante.KEY_ID + "=?", new String[]{String.valueOf(id)}); 
     db.close(); 

そして、ここでは何のデータベースからリストビューの列とレコードを削除するための私のコード:

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

'podatki.getItemId()'がこの行から返すものを確認できるように 'DBPodatci'をこのクラスに投稿する –

+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は、あなたがに

関連する問題