인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

최대환님의 프로필 이미지
최대환

작성한 질문수

[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)

내가 좋아요한 사람들의 정보 불러오기

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

작성

·

186

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

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

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

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

최대환님의 프로필 이미지
최대환

작성한 질문수

질문하기