Home 8월 19일 Today I Learned
Post
Cancel

8월 19일 Today I Learned

오늘 한 일

  • 블로그 글을 작성하였다
  • 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·아이 프로젝트 진행해야겠다

This post is licensed under CC BY 4.0 by the author.

안드로이드 Firebase Realtime Database does not define a no-argument constructor 오류

안드로이드 Firebase Realtime Database Permission denied Error