Skip to content

Commit 2a4b842

Browse files
committed
Created examples
1 parent 34784ad commit 2a4b842

23 files changed

+306
-136
lines changed

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ dependencies {
6363
//==================== Support Library ====================
6464
implementation depends.support.appcompat
6565
implementation depends.support.design
66+
implementation depends.support.cardview
6667

6768
//==================== Structure ====================
6869
implementation depends.rxjava2.core

app/src/androidTest/java/co/kyash/vtl/MainActivityTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import android.support.test.espresso.intent.Intents
55
import android.support.test.espresso.intent.matcher.IntentMatchers
66
import android.support.test.espresso.intent.rule.IntentsTestRule
77
import android.support.test.filters.LargeTest
8-
import co.kyash.vtl.sample.MainActivity
8+
import co.kyash.vtl.example.MainActivity
99
import org.junit.Rule
1010
import org.junit.Test
1111

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="co.kyash.vtl.sample">
3+
package="co.kyash.vtl.example">
44

55
<uses-permission android:name="android.permission.INTERNET" />
66

@@ -18,7 +18,7 @@
1818
android:name="io.fabric.ApiKey"
1919
android:value="0a7aa1279a42a1b8dd1e111287030f783b9ee2d2" />
2020

21-
<activity android:name=".MainActivity">
21+
<activity android:name="co.kyash.vtl.example.MainActivity">
2222
<intent-filter>
2323
<action android:name="android.intent.action.MAIN" />
2424

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
package co.kyash.vtl.example
2+
3+
import android.databinding.DataBindingUtil
4+
import android.os.Bundle
5+
import android.support.v7.app.AppCompatActivity
6+
import android.util.Log
7+
import android.view.View
8+
import android.widget.Toast
9+
import co.kyash.vtl.ValidatableView
10+
import co.kyash.vtl.example.databinding.ActivityMainBinding
11+
import co.kyash.vtl.validators.AsciiOnlyValidator
12+
import co.kyash.vtl.validators.EmailValidator
13+
import co.kyash.vtl.validators.NumberOnlyValidator
14+
import co.kyash.vtl.validators.RequiredValidator
15+
import com.crashlytics.android.Crashlytics
16+
import io.fabric.sdk.android.Fabric
17+
import io.reactivex.Completable
18+
import io.reactivex.android.schedulers.AndroidSchedulers
19+
import io.reactivex.disposables.CompositeDisposable
20+
import io.reactivex.schedulers.Schedulers
21+
22+
23+
class MainActivity : AppCompatActivity() {
24+
25+
private val binding: ActivityMainBinding by lazy {
26+
DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main)
27+
}
28+
29+
private val validatableViewsForTriggerTextChanged: ArrayList<ValidatableView> = ArrayList()
30+
31+
private val validatableViewsForTriggerFocusChanged: ArrayList<ValidatableView> = ArrayList()
32+
33+
private val compositeDisposable = CompositeDisposable()
34+
35+
override fun onCreate(savedInstanceState: Bundle?) {
36+
super.onCreate(savedInstanceState)
37+
Fabric.with(this, Crashlytics())
38+
39+
initValidators()
40+
41+
binding.submit.setOnClickListener(this::onSubmitClick)
42+
binding.submit2.setOnClickListener(this::onSubmit2Click)
43+
}
44+
45+
private fun initValidators() {
46+
validatableViewsForTriggerTextChanged.addAll(arrayOf(
47+
binding.firstName.register(RequiredValidator(getString(R.string.validation_error_required))),
48+
binding.lastName.register(RequiredValidator(getString(R.string.validation_error_required))),
49+
binding.email.register(EmailValidator(getString(R.string.validation_error_email))),
50+
binding.numberOnly.register(NumberOnlyValidator(getString(R.string.validation_error_number_only))),
51+
binding.asciiOnly.register(AsciiOnlyValidator(getString(R.string.validation_error_ascii_only)))
52+
))
53+
54+
validatableViewsForTriggerFocusChanged.addAll(arrayOf(
55+
binding.email2.register(EmailValidator(getString(R.string.validation_error_email)))
56+
))
57+
}
58+
59+
private fun onSubmitClick(@Suppress("UNUSED_PARAMETER") view: View) {
60+
val validations: List<Completable> = validatableViewsForTriggerTextChanged.map { it.validateAsCompletable() }
61+
validate(validations)
62+
}
63+
64+
private fun onSubmit2Click(@Suppress("UNUSED_PARAMETER") view: View) {
65+
val validations: List<Completable> = validatableViewsForTriggerFocusChanged.map { it.validateAsCompletable() }
66+
validate(validations)
67+
}
68+
69+
private fun validate(validations: List<Completable>) {
70+
compositeDisposable.clear()
71+
72+
compositeDisposable.add(
73+
Completable.mergeDelayError(validations)
74+
.subscribeOn(Schedulers.computation())
75+
.observeOn(AndroidSchedulers.mainThread())
76+
.subscribe({
77+
Log.d("MainActivity", "Validation cleared.")
78+
Toast.makeText(this, R.string.validation_success, Toast.LENGTH_SHORT).show()
79+
}, { throwable ->
80+
Log.e("MainActivity", "Validation error occurred.", throwable)
81+
Toast.makeText(this, R.string.validation_error_occurred, Toast.LENGTH_SHORT).show()
82+
})
83+
)
84+
}
85+
86+
}

app/src/main/java/co/kyash/vtl/sample/MainActivity.kt

Lines changed: 0 additions & 73 deletions
This file was deleted.

0 commit comments

Comments
 (0)