/* 리스트뷰 롱클릭시 삭제 다이얼로그 */
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View view,
final int position, long id) {
// String[] from = new String[] { BaseColumns._ID, COL1 };
// int[] to = new int[] { R.id.rec_id, R.id.rec_memo };
switch(position){
default:
AlertDialog diaBox = new AlertDialog.Builder(
ListViewTestActivity.this)
.setTitle("Delete")
.setMessage("Really Delete?")
.setIcon(R.drawable.ic_launcher)
.setPositiveButton("YES",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
SQLiteDatabase db=null;
if(db==null){
db=openOrCreateDatabase("test.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
}
if(db != null){
//db.close();
}
// intent.putExtra("id", Long.toString(_id));
//System.out.println("_id -> " + "_id");
Cursor cursor = db.rawQuery("SELECT * FROM test", null);
// int id=0;
// id=Integer.parselnt("_id");
cursor.moveToPosition(position);
int i = cursor.getInt(cursor.getColumnIndex("_id"));
db.execSQL("DELETE FROM test WHERE _id = "+i+" ");
//List 액티비티에서 넘긴 선택한 리스트뷰의 id 값
// String id=getIntent().getExtras().getString("id");
// _id=Integer.parseInt(id); // _id 값으로 질의를 하려면 정수형으로 형 변환해야 함
Cursor c=db.rawQuery(Q_GET_LIST, null);
listView=(ListView) findViewById(R.id.listView);
adapter1=new SimpleCursorAdapter(
getApplicationContext(),
android.R.layout.simple_list_item_2,
c,
new String[] {"title", "contents"},
new int[] {android.R.id.text1, android.R.id.text2}
);
listView.setAdapter(adapter1);
//String query="DELETE FROM test WHERE _id= " + _id;
//db.execSQL(query);
//finish(); //현재 액티비티 종료
// Builder.show();
}
}).setNegativeButton("NO", null).create();
diaBox.show();
break;
}
return false;
}
});
}// 수정 한뒤
db를 만들었습니당 삭제를 하려고 해요
이대로 돌리면 1 2 3 4 5 순서대로 만들었을 때 대칭적으로 지워지네요 ㅠ
만약에 1을 지우면 5번째가 지워지구 3을 지우면 3이 지워지구.. 4를 지우면 2가 지워지고 그래요..
position이랑 db의 _id값 문제인 것같은데 누르는대로 삭제가 되게 할 방법이 없을ㄲ요? ㅜㅜ