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


    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년 06월 14일에 작성됨
    학생이며 안드로이드 및 애플 앱에 관심이 많습니다.

  • 어떤 에러가 발생하는지 확인이 필요합니다. 에러 로그도 올려주세요~     한로니로니   2016.6.14 09:11     
조회수 265


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close