< 참고 링크 >
메인 액티비티 클래스로 가서 데이터베이스를 생성하는 작업과 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에서 내가 만들어 놓은 데이터베이스와 테이블, 값들을 확인할 수 있습니다.
그러나 저장한 리스트 아이템들이 에뮬레이터 화면에 표시가 되지 않고 있습니다.
다음 게시글에서 띄워보겠습니다.