• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

좋아요한 유저 정보가 안 불러와진다면(비동기 관련)

23.09.21 09:32 작성 조회수 146

0

'내가 좋아요한 유저 정보 보기'강의에서는

override fun onCreate(savedInstanceState: Bundle?) {
    getUserDataList()
    getMyLikeList()
}

이런식으로 썼는데 저는 똑같이해보니까 getUserDataList() 함수 안에 있는 아래 코드에서 likeUserList 가 비동기때문에 아직 들어오지 않았어서 에러가 났었습니다

override fun onDataChange(dataSnapshot: DataSnapshot) {
    for (dataModel in dataSnapshot.children) {
        val user = dataModel.getValue(UserDataModel::class.java)!!
        if (likeUserList.contains(user.uid)) {
            userDataModel.add(dataModel.getValue(UserDataModel::class.java)!!)
        }
    }

그래서 아래처럼 getMyLikeList() 가 모두 돈 후 likeUserList 가 다 채워지면 getUserDataList() 를 그때 실행시키는 방식으로 해결했습니다.

override fun onCreate(savedInstanceState: Bundle?) {
    // getUserDataList() 삭제함
    getMyLikeList()
}
private fun getMyLikeList() {
    FirebaseRef.userLikeRef.child(FirebaseAuthUtils.getUid()).addValueEventListener(object : ValueEventListener {
        override fun onDataChange(dataSnapshot: DataSnapshot) {
            for (dataModel in dataSnapshot.children) {
                likeUserList.add(dataModel.key.toString())
            }
            getUserDataList()  // 추가함
        }

        override fun onCancelled(error: DatabaseError) {
        }
    })
}

답변 1

답변을 작성해보세요.

1

비동기때문에 아직 들어오지 않았어서 에러가 났었습니다
라고 말씀해주셨는데 혹시 에러가 난 코드를 공유해주실 수 있으실까요?
저도 한번 확인해보겠습니다!

코드를 깃허브에 업데이트 중이신 것 같은데, 에러가 났을 때의 코드를 공유해주시면 살펴볼게요~