db와 리스트뷰 연동 중 에러 발생.

조회수 2401회
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            dialogView = (View) View.inflate(MainActivity.this, R.layout.dialog1, null);
            AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
            dlg.setTitle("수정 및 삭제");
            dlg.setView(dialogView);

            sqlDB = myDBHelper.getReadableDatabase();
            Cursor cursor;
            cursor = sqlDB.rawQuery("SELECT * FROM groupTBL WHERE _id = "+ position + " ;", null);

            final String selectName = cursor.getString(1);
            final String selectAge = cursor.getString(3);
            final String selectGender = cursor.getString(2);


            cursor.close();
            sqlDB.close();



            dlg.setPositiveButton("수정", new DialogInterface.OnClickListener(){
                public void onClick(DialogInterface dialog, int which){
                    dlgedtName = (EditText) dialogView.findViewById(R.id.dlgedtName);
                    dlgedtAge = (EditText) dialogView.findViewById(R.id.dlgedtAge);
                    dlgrGirl = (RadioButton) dialogView.findViewById(R.id.dlgrGirl);
                    dlgrMan = (RadioButton) dialogView.findViewById(R.id.dlgrMan);
                    dlgrGroup = (RadioGroup) dialogView.findViewById(R.id.dlgrGroup);
                    if(selectGender == "남자"){
                        dlgrMan.setChecked(true);
                    }else{
                        dlgrGirl.setChecked(true);
                    }
                    dlgedtName.setText(selectName);
                    dlgedtAge.setText(selectAge);

                    switch (dlgrGroup.getCheckedRadioButtonId()){
                        case R.id.dlgrMan:
                            sqlDB = myDBHelper.getWritableDatabase();
                            sqlDB.execSQL("UPDATE groupTBL SET gName = '"  + dlgedtName.getText().toString() + "', gAge = '" + dlgedtAge.getText().toString() +", gGender = '남자' WHERE _id = " + i + ";");
                            sqlDB.close();
                            ListUp();
                            break;
                        case R.id.dlgrGirl:
                            sqlDB = myDBHelper.getWritableDatabase();
                            sqlDB.execSQL("UPDATE groupTBL SET gName = '"  + dlgedtName.getText().toString() + "', gAge = '" + dlgedtAge.getText().toString() +", gGender = '여자' WHERE _id = " + i + ";");
                            sqlDB.close();
                            ListUp();
                            break;
                        default:
                            Toast.makeText(getApplicationContext(), "성별을 선택해 주세요", Toast.LENGTH_SHORT).show();
                            break;
                    }
                }
            });
            dlg.setNegativeButton("삭제",new DialogInterface.OnClickListener(){
                public void onClick(DialogInterface dialog, int which){
                    dlgedtName = (EditText) dialogView.findViewById(R.id.dlgedtName);
                    dlgedtAge = (EditText) dialogView.findViewById(R.id.dlgedtAge);
                    dlgrGirl = (RadioButton) dialogView.findViewById(R.id.dlgrGirl);
                    dlgrMan = (RadioButton) dialogView.findViewById(R.id.dlgrMan);
                    dlgrGroup = (RadioGroup) dialogView.findViewById(R.id.dlgrGroup);
                    if(selectGender == "남자"){
                        dlgrMan.setChecked(true);
                    }else{
                        dlgrGirl.setChecked(true);
                    }
                    dlgedtName.setText(selectName);
                    dlgedtAge.setText(selectAge);
                    sqlDB = myDBHelper.getWritableDatabase();
                    sqlDB.execSQL("DELETE FROM userTable WHERE _id = " + i + ";");
                    sqlDB.close();
                    ListUp();
                }
            });
            dlg.show();
        }
    });

}

//리스트뷰에 아이템 만드는 거.
public void ListUp(){
    sqlDB = myDBHelper.getReadableDatabase();
    Cursor cursor;
    cursor = sqlDB.rawQuery("SELECT * FROM groupTBL;", null);

    String strTable = "";

    //이거 안쓰면 중복되어 아이템이 생성되기 때문에 해주어야 함. 디비에는 입력한 데로 있기 때문에 신경쓰지 않아도 됨.
    midList.clear();

    while(cursor.moveToNext()){
        strTable += cursor.getString(0) + "    ";
        strTable += cursor.getString(1) + "    ";
        strTable += cursor.getString(2) + "    ";
        strTable += cursor.getString(3) ;
        midList.add(strTable);
        strTable = "";
    }

    //리스트 뷰 설정.
    listView.setAdapter(adapter);

    cursor.close();
    sqlDB.close();
}

리스트 뷰 아이템을 클릭하면 대화상자를 불러와 거기서 수정하는 형식인데 대화상자 자체가 켜지지 않습니다. 계속 에러가 발생해서 이렇게 질문합니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 어떤 에러가 발생하는지 확인이 필요합니다. 에러 로그도 올려주세요~ 알 수 없는 사용자 2016.6.14 09:11

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)