
< 참고 링크 >
메인 액티비티 클래스로 가서 데이터베이스를 생성하는 작업과 btnAdd의 이벤트를 만들어보겠습니다.
public static NoteDatabase noteDatabase= null; 로 NoteDatabase를 초기화 시켜주고 다음 코드를 입력합니다.
//MainActivity.java public static NoteDatabase noteDatabase = null; public void openDatabase() { if(noteDatabase != null){ noteDatabase.close(); noteDatabase = null; } noteDatabase = NoteDatabase.getInstance(this); boolean isOpen = noteDatabase.open(); if (isOpen){ Log.d(TAG, "Note database is open."); } else { Log.d(TAG, "Note database is not open."); } } protected void onDestroy() { super.onDestroy(); if(noteDatabase != null) { noteDatabase.close(); noteDatabase = null; } }
NoteDatabase에서 정의했던 oepn()과 close()메서드가 여기서 쓰입니다.
데이터 베이스를 열거나, 없으면 만드는 역할을 합니다.
그 후 openDatabase()를 onCreate()메서드 안에 써서 앱이 실행될 때 openDatabase()가 실행하게 해줍니다.
이 클래스에서는 마지막으로 btnAdd의 이벤트를 정의해봅시다.
이전에 만들었던 saveToDo()메서드를 이용할 것입니다.
EditText와 Context변수를 선언해주고 saveToDo메서드 안에 다음 코드를 작성합니다.
private void saveToDo() { inputToDo = findViewById(R.id.inputText); String todo = inputToDo.getText().toString(); String sqlSave = "insert into" + NoteDatabase.TABLE_NOTE + " (TODO) values (" + "'" + todo + "')"; NoteDatabase database = NoteDatabase.getInstance(context); database.execSQL((sqlSave)); inputToDo.setText(""); } }
EditText에 적힌 글을 String todo로 가져와 테이블에 값을 추가하는 SQL문을 만들고 execSQL을 통해 실해합니다.
이제는 btnRemove의 클릭 이벤트를 만들어봅시다.
리스트 아이템으로 만들어지는 파트가 뷰홀더이기 때문에 각각의 버튼을 구별하기 위해서는 뷰홀더 내에서 만들 때 버튼 이벤트도 같이 만들자 생각했다고 합니다.
다음 코드를 ViewHolder 메서드 내에 작성합니다.
Context context; private void removeToDo(String TODO) { String deleteSql = "delete from " + NoteDatabase.TABLE_NOTE + " where " + " TODO = '" + TODO + "'"; NoteDatabase database = NoteDatabase.getInstance(context); database.execSQL(deleteSql); }
removeToDo 밖에 Context변수를 선언하고 안에서 deleteSQL로 테이블을 삭제하는 sql문을 만들어 실행합니다.
CheckBox에서 입력된 String을 다시 받아와 그 String을 토대로 테이블을 찾아 삭제하는 방식입니다.
이제 에뮬레이터를 실행해봅니다.

EditText에 일정을 입력하고 "일정 추가"(btnAdd)를 눌러주게 되면
안드로이드 스튜디오 아래 App Inspection에서 내가 만들어 놓은 데이터베이스와 테이블, 값들을 확인할 수 있습니다.
그러나 저장한 리스트 아이템들이 에뮬레이터 화면에 표시가 되지 않고 있습니다.
다음 게시글에서 띄워보겠습니다.