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();
}
리스트 뷰 아이템을 클릭하면 대화상자를 불러와 거기서 수정하는 형식인데 대화상자 자체가 켜지지 않습니다. 계속 에러가 발생해서 이렇게 질문합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력