-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
경북대Android_정수현_3주차 과제_Step2 #77
base: jsh00325
Are you sure you want to change the base?
Conversation
- conflict 처리 후, 다시 생긴 기존의 Contract와 DbHelper를 삭제
else -> "오류가 발생했습니다. 다시 시도해주세요." | ||
}, | ||
Toast.LENGTH_SHORT | ||
).show() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
에러처리 잘 해주셨네요 🎉
케이스별로 깔끔하게 잘 구현 해주신것 같습니다!
추가 코멘트를 드리자면
현업에서는 어떤 에러가 발생했는지 감지 하기위해
에러가 발생하면 서버로 전송해 어떤 에러가 났었는지 모니터링합니다.
대표적인툴로 Firebase Crashlytics가 있습니다. 시간나실때 한번 보시는걸 추천드려요!
} | ||
}, object : KakaoMapReadyCallback() { | ||
override fun onMapReady(map: KakaoMap) { | ||
Log.d("MapActivity", "onMapReady") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(지금 대응하지 않으셔도 됩니다.)
엄밀히 따지면 맵과 관련된 서비스에서는
map이 ready된 후에 다른 작업을 시작하는게 맞긴 합니다.
이부분 슬랙으로 깃허브 해당 코드 라인 태그해서 다시 문의주시겠어요? |
@JSpiner 슬랙으로 어떻게 문의하는지 모르겠어서 여기에 남깁니다... 해당 부분에서 다음과 같이 visibility를 조절하지 않도록 변경한다면, 맨 아래 영상처럼 애니메이션이 정상적으로 작동합니다. binding.searchHistoryRecyclerView.isVisible = true
viewModel.history.observe(this) {
it?.let { historyData ->
val adapter = binding.searchHistoryRecyclerView.adapter as? HistoryAdapter
if (adapter == null) {
binding.searchHistoryRecyclerView.adapter = HistoryAdapter(historyData, this, viewModel)
} else {
adapter.updateDataList(historyData)
}
}
}
|
binding.searchHistoryRecyclerView.isVisible = true
binding.executePendingBindings()
|
@JSpiner viewModel.history.observe(this) {
it?.let { historyData ->
binding.searchHistoryRecyclerView.isVisible = historyData.isNotEmpty()
binding.executePendingBindings()
val adapter = binding.searchHistoryRecyclerView.adapter as? HistoryAdapter
if (adapter == null) {
binding.searchHistoryRecyclerView.adapter =
HistoryAdapter(historyData, this, viewModel)
} else {
adapter.updateDataList(historyData)
}
}
}
|
아..! |
이렇게 말씀이신가요? viewModel.history.observe(this) {
it?.let { historyData ->
var adapter = binding.searchHistoryRecyclerView.adapter as? HistoryAdapter
if (adapter == null) {
adapter = HistoryAdapter(historyData, this, viewModel)
binding.searchHistoryRecyclerView.adapter = adapter
} else {
adapter.updateDataList(historyData)
}
if (historyData.isEmpty()) {
binding.searchHistoryRecyclerView.isVisible = false
adapter.updateDataList(emptyList())
}
else {
binding.searchHistoryRecyclerView.isVisible = true
}
binding.executePendingBindings()
}
} |
코드 작성하면서 어려웠던 점
카카오 맵 sdk를 적용하는 과정에서, 여러번의 시행착오를 겪었고, 공식문서와 함께 여러 블로그 글을 참고하여 프로젝트에 적용하였습니다. 이 과정에서 gradle에 dependency 추가나 원격 저장소 설정하는 부분이 가장 힘들었습니다.
코드 리뷰 시, 멘토님이 중점적으로 리뷰해줬으면 하는 부분
이전 코드의 검색 기록을 나타내는 부분에서, item들을 모두 지운 후 새로운 item을 추가하면 이전에 존재했던 item이 잠시 보였다가 새로운 item이 생성되는 애니메이션이 나타났습니다... 해당 부분을 고쳐보려고 계속 구글링해보았는데 해결책을 찾지 못해서 코드의 여러 부분을 건드려보니, 해당 RecyclerView의 visibility 속성을 건드리지 않으니 해당 현상이 나타나지 않는 것을 확인했습니다.
이 부분을 어떻게 고칠 수 있는지 궁금합니다..!