eveeeeef21

Pendekatan Primitive

Aug 24th, 2025
499
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 4.34 KB | Source Code | 0 0
  1. package com.dicoding.myreactiveform
  2.  
  3. import android.os.Bundle
  4. import android.text.Editable
  5. import android.text.TextWatcher
  6. import android.util.Patterns
  7. import androidx.appcompat.app.AppCompatActivity
  8. import androidx.core.content.ContextCompat
  9. import com.dicoding.myreactiveform.databinding.ActivityMainBinding
  10.  
  11. class MainActivity : AppCompatActivity() {
  12.  
  13.     private var emailValid = false
  14.     private var passwordValid = false
  15.     private var passwordConfirmationValid = false
  16.  
  17.     private lateinit var binding: ActivityMainBinding
  18.  
  19.     override fun onCreate(savedInstanceState: Bundle?) {
  20.         super.onCreate(savedInstanceState)
  21.         binding = ActivityMainBinding.inflate(layoutInflater)
  22.         setContentView(binding.root)
  23.  
  24.         validateButton()
  25.  
  26.         binding.edEmail.addTextChangedListener(object : TextWatcher {
  27.             override fun afterTextChanged(s: Editable?) {
  28.             }
  29.  
  30.             override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
  31.             }
  32.  
  33.             override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
  34.                 validateEmail()
  35.             }
  36.         })
  37.  
  38.         binding.edPassword.addTextChangedListener(object : TextWatcher {
  39.             override fun afterTextChanged(s: Editable?) {
  40.             }
  41.  
  42.             override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
  43.             }
  44.  
  45.             override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
  46.                 validatePassword()
  47.             }
  48.         })
  49.  
  50.         binding.edConfirmPassword.addTextChangedListener(object : TextWatcher {
  51.             override fun afterTextChanged(s: Editable?) {
  52.             }
  53.  
  54.             override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
  55.             }
  56.  
  57.             override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
  58.                 validatePasswordConfirmation()
  59.             }
  60.         })
  61.     }
  62.  
  63.     fun validateEmail() {
  64.         // jika password tidak valid tampilkan peringatan
  65.         val input = binding.edEmail.text.toString()
  66.         if (!Patterns.EMAIL_ADDRESS.matcher(input).matches()) {
  67.             emailValid = false
  68.             showEmailExistAlert(true)
  69.         } else {
  70.             emailValid = true
  71.             showEmailExistAlert(false)
  72.         }
  73.         validateButton()
  74.     }
  75.  
  76.     fun validatePassword() {
  77.         // jika password < 6 karakter tampilkan peringatan
  78.         val input = binding.edPassword.text.toString()
  79.         if (input.length < 6) {
  80.             passwordValid = false
  81.             showPasswordMinimalAlert(true)
  82.         } else {
  83.             passwordValid = true
  84.             showPasswordMinimalAlert(false)
  85.         }
  86.         validateButton()
  87.     }
  88.  
  89.     fun validatePasswordConfirmation() {
  90.         // jika konfirmasi password tidak sesuai tampilkan peringatan
  91.         val input = binding.edConfirmPassword.text.toString()
  92.         if (input != binding.edPassword.text.toString()) {
  93.             passwordConfirmationValid = false
  94.             showPasswordConfirmationAlert(true)
  95.         } else {
  96.             passwordConfirmationValid = true
  97.             showPasswordConfirmationAlert(false)
  98.         }
  99.         validateButton()
  100.     }
  101.  
  102.     private fun validateButton() {
  103.         // jika semua field sudah terisi, enable button submit
  104.         if (emailValid && passwordValid && passwordConfirmationValid) {
  105.             binding.btnRegister.isEnabled = true
  106.             binding.btnRegister.setBackgroundColor(ContextCompat.getColor(this, R.color.purple_500))
  107.         } else {
  108.             binding.btnRegister.isEnabled = false
  109.             binding.btnRegister.setBackgroundColor(ContextCompat.getColor(this, android.R.color.darker_gray))
  110.         }
  111.     }
  112.  
  113.     private fun showEmailExistAlert(isNotValid: Boolean) {
  114.         binding.edEmail.error = if (isNotValid) getString(R.string.email_not_valid) else null
  115.     }
  116.  
  117.     private fun showPasswordMinimalAlert(isNotValid: Boolean) {
  118.         binding.edPassword.error = if (isNotValid) getString(R.string.password_not_valid) else null
  119.     }
  120.  
  121.     private fun showPasswordConfirmationAlert(isNotValid: Boolean) {
  122.         binding.edConfirmPassword.error = if (isNotValid) getString(R.string.password_not_same) else null
  123.     }
  124. }
  125.  
Advertisement
Add Comment
Please, Sign In to add comment