본문 바로가기

개인공부/android13

[Kotlin] Room을 사용하여 로컬 데이터베이스 저장 Room 이란? SQLite를 완벽히 활용하면서 데이터베이스 액세스가 가능하도록 SQLite에 추상화 계층을 제공하는 라이브러리 앱을 실행하는 기기에서 앱 데이터의 캐시를 만들 수 있고, 앱의 캐시를 통해 사용자는 인터넷 연결 여부와 관계없이 앱의 주요 정보를 확인할 수 있다. Room을 사용하면 얻을수 있는 이점 SQL 쿼리의 컴파일 시간 확인 반복적이고 오류가 발생하기 쉬운 상용구 코드를 최소화하는 편의 주석 간소화된 데이터베이스 이전 경로 Room의 기본 요소 데이터베이스 클래스: 데이터베이스를 보유하고 앱의 영구 데이터와의 기본 연결을 위한 기본 액세스 포인트 역할을 합니다. 데이터 항목: 앱 데이터베이스의 테이블을 나타냅니다. 데이터 액세스 객체(DAO): 앱이 데이터베이스의 데이터를 쿼리, 업.. 2022. 3. 6.
[Kotlin] Coroutine을 이용한 간단한 타이머 1. 시작 버튼을 클릭했을 때, System의 현재 시간을 StartTime 변수에 저장하고 인수로 시작 시간을 주어, Timer를 시작시킨다. 2. Coroutine Scope 안에서 while문을 실행시켜 System의 시간을 Delay를 이용 계속 갱신한다. 이때 화면에 표시될 시간은 Scope 안에서 [ 갱신된 System의 시간 - 인수로 전달된 시간 ]이 될 것이다. 3. 이미 시작이 된 경우, 중지 또는 타이머를 재개시킨다. 이때, 재개시키는 경우의 시간은 중지가 된 시점부터, System의 시간을 뺀 값이다. 그 후, Timer에게 재개 시간을 인수로 주어, Timer를 다시 시작한다. private var isStart = false private var startTime = 0L pri.. 2022. 2. 16.
[Kotlin] Fragment already added: DialogFragment 운동일지 App을 개발하는 중 발생한 오류이다. setOnClickListener 로 버튼을 클릭하면, DialogFragment의 메소드 show()로 Fragment를 띄웠는데 버튼을 연타하니 Fragment가 이미 추가되었다는 메시지를 받게되었다. 해결책 button.setOnClickListener { if(!DialogFragment.isAdded) DialogFragment.show(childFragmentManager,"SEARCH_DIALOG") } DialogFragment가 추가되지 않았다면 Show 메소드를 실행하도록 하여 해결! 2022. 2. 3.
[Kotlin] Adpater에서 Room Database Delete Event 받기 1. Adpater 매개변수로 onDeleteCallBack 이라는 변수 -> 람다 함수를 반환 -> 람다함수는 Routine 값을 매개변수로, Unit을 리턴값으로 갖는다. class RoutineAdapter(private val onDeleteCallBack: (Routine) -> Unit) : {} 2. Adpater item 중 클릭 되었을 때 onDeleteCallBack을 호출하고 싶은 곳에 작성 override fun onBindViewHolder(holder: RoutineViewHolder, position: Int) { val currentItem = routineList[position] holder.binding.deleteBtn.setOnClickListener { onDele.. 2022. 2. 3.