Conversation
| showSnackbar(binding.root, getString(R.string.signup_error_message)) | ||
| } | ||
| signUpViewModel.signUp() | ||
| observeSignUp() |
There was a problem hiding this comment.
observeSignUp 함수만 onCreate에서 실행시켜주지 않은 이유가 있나염?? 걍 진짜 궁금합니당
There was a problem hiding this comment.
버튼이 조건에 안맞으면 항상 비활성화 상태라 여기다 두었는데 그냥 onCreate에 두는게 더 명확해 보이네요! 감삼다~
| val isEnabledLoginButton = MediatorLiveData<Boolean>().apply { | ||
| addSourceList(id, pw, nickname, mbti) { isValidSignUpInfo() } | ||
| } |
There was a problem hiding this comment.
MediatorLiveData에 대한 확장함수 입니다!
궁금하면 안드 확장함수 모음집에 남겨뒀으니 보고 적용해봐도 좋을것 같네요!
| } | ||
|
|
||
| private fun observePw() { | ||
| signUpViewModel.pw.observe(this) { |
There was a problem hiding this comment.
observe가 상태변화가 있을 만한 곳에 넣는 거 맞나요? 어떤 기준으로 observe를 쓰는지 궁금합니당
There was a problem hiding this comment.
상태변화가 있을 만한 곳이라기 보다는 상태변화 감지가 필요한 곳이 맞는것 같습니다!
이 경우에는 pw가 비밀번호 입력에 대한 LiveData이므로 상태가 변화할 때 마다 감지되어서
비밀번호 입력 조건에 부합한지 확인 후에 오류메세지의 visible처리를 해야되므로 필요하죠!
여기도 함수 분리가 필요해 보이긴 하는데 귀찮음 이슈로 패스....
HAJIEUN02
left a comment
There was a problem hiding this comment.
멋있습니당,, 나두 언어 하나라도 잘 쓰고 코드도 깔끔깔쌈하게 짤 줄 아는 사람이 되고 싶다!!!!!! 고생하셨어욤~~
| private fun isValidateId(id: String): Boolean { | ||
| return id.isNotBlank() && ID_REGEX.matcher(id).matches() | ||
| } | ||
|
|
There was a problem hiding this comment.
왕 근데 새삼,, 삭제된 함수들도 진짜 간결하구 야무지네요.... 삭제됐지만 배워야겠는데여
|
|
||
| object BindingAdapter { | ||
| @JvmStatic | ||
| @BindingAdapter("setSignupZeroErrorTextVisible") |
There was a problem hiding this comment.
요런식으루 작성하는 건 먼가요?! Adapter를 Binding하는데 이런식으로 쓰는 건가요?? 아님 어댑터 안의 어떤 요소를 바인딩하는 것인지.. 아니면 어댑터에 끼워줄 애를 이렇게 넣는 것인지..
📌 관련 이슈
📷 screenshot
6.mp4
📝 Work Desciption
📚 Reference 혹은 궁금한 사항들
필수랑 심화를 분리하기 애매해서 한번에 올립니다...!
데이터 바인딩 안쓰고 있었는데 역시 편하네요... 앱잼때는 써야겠습니다
MediatorLiveData 확장함수 최고네요