
오늘은 history 버튼을 눌러서 scroll view 형식으로 계산 기록들이 나오는 뷰를 만들고 Room을 이용해서 DB를 사용하였습니다. 계산 결과들을 DB에 저장하고 history view 부분에 보여주고 계산 기록 삭제 버튼을 통해서 view를 초기화 시켜주는 기능까지 완성하였습니다.
오늘 배운 것:
Room을 사용하기 위해서 build.gradle (Module) 부분을 수정해주었습니다.
dependencies {
implementation("androidx.room:room-runtime:2.3.0")
kapt("androidx.room:room-compiler:2.3.0")
}
plugins {
id 'kotlin-kapt'
}
@Database(entities = [History::class],version = 1)
abstract class AppDatabase :RoomDatabase(){
abstract fun historyDao() : HistoryDao
}
DB를 이용하기 위해서 HistoryDao 를 이용하는 AppDatabase 클래스를 하나 생성해 주었습니다.
@Entity
data class History(
@PrimaryKey val uid : Int?,
@ColumnInfo(name = "expression") val expression: String?,
@ColumnInfo(name = "result") val result : String?
)
DB에 들어갈 데이터 모델 형식을 정리했습니다. @ColumnInfo 를 앞에 붙여주어서 expression 이라는 이름과 result 를 이름으로 각각 DB에 값을 추가하는 형식입니다.
@Dao
interface HistoryDao{
@Query("SELECT * FROM history")
fun getAll(): List<History>
@Insert
fun insertHistory(history: History)
@Query("DELETE FROM history") //전체 삭제
fun deleteAll()
}
HistoryDao에는 DB에서 사용할 쿼리문들을 함수로 정의해두었습니다.
Thread(Runnable {
db.historyDao().insertHistory(History(null,expressionText,resultText))
}).start()
오늘 Thread를 처음 사용해보았습니다. db 처리를 main thread에서 처리하지않고 thread를 하나 추가로 생성해주어서 db를 처리해주었습니다. 위는 expressionText에 나온 것과 resultText에 나온 두 곳의 text를 db에 저장을 해주는 코드 입니다.
Thread(Runnable {
db.historyDao().getAll().reversed().forEach {
runOnUiThread {
val historyView = LayoutInflater.from(this).inflate(R.layout.history_row,null,false)
historyView.findViewById<TextView>(R.id.expressionTextView).text = it.expression
historyView.findViewById<TextView>(R.id.resultTextView).text = "=${it.result}"
historyLinearLayout.addView(historyView)
}
}
}).start()
history 버튼을 눌러서 뷰를 보여줄때도 Thread를 이용하여서 db에 저장된 각각의 정보들을 scroll View 의 형태로 보여주는 layout을 처리해주었습니다.
패스트캠퍼스 바로가기 -> https://bit.ly/3FVdhDa
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'패스트캠퍼스 챌린지' 카테고리의 다른 글
| [패스트캠퍼스 챌린지 6일차] Timer_App (0) | 2021.11.06 |
|---|---|
| [패스트캠퍼스 챌린지 5일차] Android 전자액자 마무리 (0) | 2021.11.05 |
| [패스트캠퍼스 챌린지 4일차] Android 전자액자 (0) | 2021.11.04 |
| [패스트캠퍼스 챌린지 3일차] Android 권한 부여하기 (0) | 2021.11.03 |
| [패스트캠퍼스 챌린지 1일차] Android (0) | 2021.11.01 |