마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

position과 id값이 반대로 돌아가는 것같아요 ㅜㅜ [closed]

0 추천
 /* 리스트뷰 롱클릭시 삭제 다이얼로그 */
  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값 문제인 것같은데 누르는대로 삭제가 되게 할 방법이 없을ㄲ요? ㅜㅜ

질문을 종료한 이유: 해결했습니다
초보 안드롱 (480 포인트) 님이 2014년 6월 1일 질문
초보 안드롱님이 2014년 6월 2일 closed

1개의 답변

+1 추천
 
채택된 답변
select 문 결과를 확인해보세요 로그로 찍든지 해서 그리고 왠만하면 저렇게 짜시지 마시고 각 아이템에 디비 아이디 값을 갖게 해서 그걸로 삭제하시는 것을 추천드립니다
mamondebaltob (32,750 포인트) 님이 2014년 6월 1일 답변
초보 안드롱님이 2014년 6월 2일 채택됨
아까 결국 position 위치 바꾸는 걸로 해결했네용 ㅜㅜ 그래도 감사합니다~~~~~~~~~~~~~~~~~~
...