오늘 한 일
- 블로그 글을 작성하였다
- A·아이 프로젝트를 진행하였다
- 블로그 TIL을 작성하였다
- 1일 1커밋을 하였다
느낀 점
그동안 안드로이드에서 Firebase Realtime Database 읽기를 할 때마다 데이터 사용 때문에 고통을 받았었는데 이번에 배운 getValue 덕분에 이제는 그 고통에서 벗어나서 작업 속도가 훨씬 올라갈 거 같다 앞으로도 기존에 불편하게 사용하던 걸 더 편하게 사용할 수 있는 방식을 찾아봐야겠다
배운 점
Android Firebase Realtime Database 읽기 데이터 쉽게 사용
기존에는 Firebase Realtime Database에서 데이터를 읽고 사용할 때
1
2
3
4
5
6
7
8
9
10
11
userInfo as HashMap<String, *>
val pinCourseItem = userInfo["pinCourseItem"] as ArrayList<String>
val now = userInfo["nowCourse"] as HashMap<String, *>
val nowCourse = Course(
now["title"].toString(),
now["nowWord"].toString().toInt(),
now["maxWord"].toString().toInt(),
now["finishChk"].toString().toBoolean()
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
val value = snapshot.value as ArrayList<*>
val quizList = value.map { item ->
item as ArrayList<*>
Quiz(
question = item[0].toString(),
correctAnswer = item[1].toString().toInt(),
oxQuestion = item[2].toString(),
oxCorrectAnswer = item[3].toString().toBoolean(),
answer1 = item[4].toString(),
answer2 = item[5].toString(),
answer3 = item[6].toString(),
answer4 = item[7].toString(),
title = item[8].toString(),
context = item[9].toString()
)
}
위와 같이 HashMap이나 ArrayList로 바꿔서 데이터를 사용했었는데 위 방법은 가독성도 떨어지고 오류가 나기도 쉽다는 문제점을 가지고 있었다
그래서 찾은 방법이 getValue인데
1
2
val value = snapshot.getValue(UserInfo::class.java)
val photo = value!!.photo
위와 같이 getValue를 사용하면 Custom DataClass 형식으로 데이터를 처음부터 받을 수 있어 데이터를 쉽게 사용할 수 있다
Android Firebase Realtime Database does not define a no-argument constructor 오류 해결법
안드로이드에서 Firebase Realtime Database does not define a no-argument constructor 오류가 발생했을 때 해결하는 방법을 블로그 글로 작성하였다
내일 계획
내일은 A·아이 프로젝트 진행해야겠다