2016-04-18 13 views
0

sqliteデータベースの行をrecyclerviewアダプタから削除しようとしています。アダプターの位置に基づいて、私はこのようにsqliteので、私の行を削除しています:Androidのリサイクルビュー項目でsqliteテーブルから行を削除するには?

helper = new DBHelper(v.getContext()); 
database = helper.getWritableDatabase(); 
//statement = database.compileStatement("update result set ANS =? where SNO ='" + pos + "'"); 
// statement = database.compileStatement("delete result where SNO ='" + pos + "'"); 
//statement.bindString(1, ANS); 
// statement.executeInsert(); 
database.delete("result", 
"SNO = ? ", 
new String[]{Integer.toString(pos)}); 
Log.d("pos", "" + pos); 
// helper.Delete(pos); 
database.close(); 

が、それは私のテーブルに削除されていない、と私はすべてのエラーを取得しておりません。私は間違って何をしていますか?

+0

はあなたが右のPOSを渡します?あなたのlog.dの値 –

答えて

3
db = this.getWritableDatabase(); 
    int l; 
    l = db.delete("result", SNO = ? " , new String[]{pos+1}); 
    if (l > 0) { 
    Toast.makeText(context, "Removed "+(pos+1), Toast.LENGTH_SHORT).show(); 
    } else { 
    Toast.makeText(context, "Error", Toast.LENGTH_SHORT).show(); 
     } 
    db.close(); 

あなたは正しいSNO(ポジション)を通過していないので、ここで「ポジション」を渡しています。

SNOを確認してくださいされては

+0

は今、何が起きているのか、リストビューでは0から始まり、databse thatsは1から始まり、最初はデータベースを削除します。そのような行..しかし、リストビューalwas 0から始まるので、私のデータベースを削除しないでください。私はそれを行うことができますか? – latha

+0

あなたはポジション –

+0

の代わりにpos + 1を使用します.. – latha

0

削除クエリに渡し、この方法を試してみてください、この文を使用して

public int deleteItem(String id) { 

    open(); 
    int b = 0; 
    try { 

     b = db.delete(DATABASE_TABLE_POST_ITEMS, TAG_PLUS + " = '" + id + "'", null); 
    } catch (Exception e) { 

     e.printStackTrace(); 
    } 
    close(); 
    return b; 
} 

コールこれを、

holder.img_plus.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        dbhelper.deleteItem((chatMessageList.get((int) v.getTag()).getListid())); 
        chatMessageList.remove(position); 
        notifyDataSetChanged(); 
       } 
      }); 
関連する問題