일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 코딩테스트
- 알고리즘 인증
- Filter
- array랑 list
- 다시봐
- 취준기록
- 알고리즘 인증_2주차
- 코틀린
- foldindexed
- 알고리즘 인증_1주차
- 다시 정리해야함
- recyclerview
- iPortfolio
- filternot
- 다시정리하기
Archives
- Today
- Total
Moments of growth
양방향 데이터 바인딩 🛠 본문
LoginViewModel.kt
val loginEmail = MutableLiveData("")
val loginPw = MutableLiveData("")
- 뷰모델에 라이브 데이터 Email, Pw 만들어준다.
activity_login.xml
<data>
<variable
name="viewModel"
type="org.seemeet.seemeet.ui.viewmodel.LoginViewModel" />
</data>
<EditText
android:id="@+id/et_email"
android:text="@={viewModel.loginEmail}"
...
/>
<EditText
android:id="@+id/et_email"
android:text="@={viewModel.loginPw}"
...
/>
- 양방향 데이터 사용
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_login"
isPossibleEmail="@{viewModel.loginEmail}"
isPossiblePw="@{viewModel.loginPw}"
...
/>
- 인자 두개 넘겨주기
BindingAdapters.kt
@JvmStatic
@BindingAdapter("isPossibleEmail", "isPossiblePw")
fun isPossible(button: AppCompatButton, email : String?, pw : String?) {
val pattern: Pattern = Patterns.EMAIL_ADDRESS
val state : Boolean = (pw.isNullOrBlank() || email.isNullOrBlank() || !pattern.matcher(email).matches())
if (state) {
button.inactiveBtn(R.drawable.rectangle_gray04_10)
} else
button.activeBtn()
}
- fun isPossible의 인자 두개(email, pw)를 xml에서 따로 받아야함
isPossibleEmail="@{viewModel.loginEmail}"
isPossiblePw="@{viewModel.loginPw}"
이런식으로 넣는데 동시에 계속 들어가는 것임 인자 두개를 나눠서 준다고 생각!
여기서 이메일 형식이 맞는지, pw값이 null인지, email 값이 null인지 다 판별해서 Boolean 형태로 버튼 활성화 또는 비활성화
LoginActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_login)
binding.lifecycleOwner=this
binding.viewModel = viewModel
...
}
- 주의: lifecycleOwner와 viewModel 코드 까먹지 않기!
'Android [Kotlin] 💻🤍' 카테고리의 다른 글
[Kotlin] Custom Toast 중복 방지하기 (0) | 2022.06.12 |
---|---|
[Kotlin] 갤러리에서 이미지 받아서 1:1 비율 원형으로 띄우기 (0) | 2022.06.12 |
android namespace (0) | 2022.01.08 |
[Kotlin] Fragment에서 Intent 사용 (0) | 2021.11.20 |
[Kotlin] Dialog setOnClickListener (0) | 2021.11.20 |
Comments