이번 시간에는 ToDo List 만들기 첫 번째 시간 Data 클래스와 DB 클래스를 만들어 보겠습니다.
build.gradle(Module:프로젝트명:app)
dependencies 괄호 안에 아래 코드를 넣어주시면 됩니다.
implementation 'com.google.android.material:material:1.6.1'
implementation 'com.github.xabaras:RecyclerViewSwipeDecorator:1.4'
라이브러리 문서
https://github.com/xabaras/RecyclerViewSwipeDecorator
setting.gradle
dependencyResolutionManagement -> repositories 괄호 안에 아래 코드를 넣어주시면 됩니다.
maven { url 'https://jitpack.io' }
- 설명 -
1. 데이터를 담을 클래스입니다.
2. id:
할일 ID
3. task
할 일
4. status
할 일 체크 상태 값
data class ToDoModel(
var id: Int,
val task: String,
val status: Int
)
- 설명 -
1. 데이터를 조회, 등록, 수정, 삭제하는 클래스입니다.
2. onCreate(db: SQLiteDatabase?)
데이터 저장할 테이블 생성
3. openDatabase
데이터베이스 쓰기 모드
4. getAllTasks(): ArrayList<ToDoModel>
할 일 목록 가져오는 함수
5. addTask(task: ToDoModel)
할일 등록하는 함수
6. updateStatus(id: Int, status: Int)
할 일 상태값 수정하는 함수
7. updateTask(id: Int, task: String?)
할일 수정하는 함수
8. deleteTask(id: Int)
할일 삭제하는 함수
class ToDoDB(context: Context) :
SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION){
private var db: SQLiteDatabase? = null
companion object{
private const val DATABASE_NAME = "todo_list.db"
private const val DATABASE_VERSION = 1
private const val TABLE_NAME = "todo_list"
private const val ID = "id"
private const val TASK = "task"
private const val STATUS = "status"
}
/**
* DB 생성
*/
override fun onCreate(db: SQLiteDatabase?) {
val query = "CREATE TABLE $TABLE_NAME ( $ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
" $TASK TEXT, $STATUS INTEGER)"
db?.execSQL(query)
}
/**
* 업그레이드
*/
override fun onUpgrade(p0: SQLiteDatabase?, p1: Int, p2: Int) {
db?.execSQL("DROP TABLE IF EXISTS $TABLE_NAME")
onCreate(db)
}
/**
* DB 쓰기
*/
fun openDatabase(){
db = this.writableDatabase
}
/**
* 할 일 전체 가져오기
*/
fun getAllTasks(): ArrayList<ToDoModel>{
//초기화
val taskList: ArrayList<ToDoModel> = ArrayList()
var cursor: Cursor? = null
var query = "SELECT * FROM $TABLE_NAME"
//읽기
db = this.readableDatabase
if(db != null){
cursor = db!!.rawQuery(query, null)
while(cursor.moveToNext()){
//담기
val task = ToDoModel(cursor.getInt(0), cursor.getString(1), cursor.getInt(2))
//리스트에 추가
taskList.add(task)
}
}
return taskList
}
/**
* 할 일 추가
*/
fun addTask(task: ToDoModel){
openDatabase()
val cv = ContentValues()
cv.put(TASK, task.task)
cv.put(STATUS, 0)
db!!.insert(TABLE_NAME, null, cv)
}
/**
* 할 일 상태 수정
*/
fun updateStatus(id: Int, status: Int){
openDatabase()
val cv = ContentValues()
cv.put(STATUS, status)
db!!.update(TABLE_NAME, cv, "id=?", arrayOf(id.toString()))
}
/**
* 할 일 수정
*/
fun updateTask(id: Int, task: String){
openDatabase()
val cv = ContentValues()
cv.put(TASK, task)
db!!.update(TABLE_NAME, cv, "id=?", arrayOf(id.toString()))
}
/**
* 할 일 삭제
*/
fun deleteTask(id: Int){
openDatabase()
db!!.delete(TABLE_NAME, "id=?", arrayOf(id.toString()))
}
}
2022.09.13 - [안드로이드] - [안드로이드 코틀린] 액티비티(Activity) 뒤로 가기 버튼 만드는 방법
2022.09.09 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Volley 사용법 part1 - 간단한 요청 및 응답
2022.09.08 - [안드로이드] - [안드로이드 코틀린] 달력(DatePicker) 코드에서 호출하는 방법
[안드로이드 코틀린] SQLite ToDo List 만드는 방법 part3 - 메인 화면과 메인 코드 (2) | 2022.09.16 |
---|---|
[안드로이드 코틀린] SQLite ToDo List 만드는 방법 part2 - 할 일 화면과 어댑터 클래스 (0) | 2022.09.15 |
[안드로이드 코틀린] 액티비티(Activity) 뒤로가기 버튼 만드는 방법 (1) | 2022.09.13 |
[안드로이드 코틀린] HTTP 통신 Volley 사용법 part2 - JSON 요청 및 파싱 (0) | 2022.09.12 |
[안드로이드 코틀린] HTTP 통신 Volley 사용법 part1 - 간단한 요청 및 응답 (0) | 2022.09.09 |
댓글 영역