-
카테고리
-
세부 분야
모바일 앱 개발
-
해결 여부
미해결
좋아요한 유저 정보가 안 불러와진다면(비동기 관련)
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
개복치개발자
지식공유자2023.09.21
비동기때문에 아직 들어오지 않았어서 에러가 났었습니다
라고 말씀해주셨는데 혹시 에러가 난 코드를 공유해주실 수 있으실까요?
저도 한번 확인해보겠습니다!
코드를 깃허브에 업데이트 중이신 것 같은데, 에러가 났을 때의 코드를 공유해주시면 살펴볼게요~
답변 1