From 9c799fa8d4386b021cbf93f487bca4cc37ed4201 Mon Sep 17 00:00:00 2001 From: luyao Date: Tue, 9 Jul 2019 16:52:13 +0800 Subject: [PATCH] add ListenerExt --- app/src/main/AndroidManifest.xml | 1 + .../java/luyao/util/ktx/ui/ExtActivity.kt | 1 + .../luyao/util/ktx/ui/ListenerExtActivity.kt | 31 +++++++++++++ app/src/main/res/layout/activity_listener.xml | 14 ++++++ app/src/main/res/values/mainStyles.xml | 19 ++++++++ .../java/luyao/util/ktx/ext/ListenerExt.kt | 46 +++++++++++++++++++ 6 files changed, 112 insertions(+) create mode 100644 app/src/main/java/luyao/util/ktx/ui/ListenerExtActivity.kt create mode 100644 app/src/main/res/layout/activity_listener.xml create mode 100644 ktx/src/main/java/luyao/util/ktx/ext/ListenerExt.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 254dd70..bd626e8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,6 +33,7 @@ + \ No newline at end of file diff --git a/app/src/main/java/luyao/util/ktx/ui/ExtActivity.kt b/app/src/main/java/luyao/util/ktx/ui/ExtActivity.kt index a105a5f..6317439 100644 --- a/app/src/main/java/luyao/util/ktx/ui/ExtActivity.kt +++ b/app/src/main/java/luyao/util/ktx/ui/ExtActivity.kt @@ -16,6 +16,7 @@ class ExtActivity : CommonListActivity() { add(ItemBean("ToastExt", ToastExtActivity::class.java)) add(ItemBean("AppExt", ToastExtActivity::class.java)) add(ItemBean("IntentExt", IntentExtActivity::class.java)) + add(ItemBean("ListenerExtActivity", ListenerExtActivity::class.java)) add(ItemBean("PermissionExt",PermissionExtActivity::class.java)) add(ItemBean("SharedPreferencesExt",SharedPreferencesActivity::class.java)) } diff --git a/app/src/main/java/luyao/util/ktx/ui/ListenerExtActivity.kt b/app/src/main/java/luyao/util/ktx/ui/ListenerExtActivity.kt new file mode 100644 index 0000000..d902c58 --- /dev/null +++ b/app/src/main/java/luyao/util/ktx/ui/ListenerExtActivity.kt @@ -0,0 +1,31 @@ +package luyao.util.ktx.ui + +import kotlinx.android.synthetic.main.activity_listener.* +import kotlinx.android.synthetic.main.title_layout.* +import luyao.ktx.R +import luyao.util.ktx.base.BaseActivity +import luyao.util.ktx.ext.textWatcher +import luyao.util.ktx.ext.toast + +/** + * Created by luyao + * on 2019/7/9 16:24 + */ +class ListenerExtActivity : BaseActivity() { + + override fun getLayoutResId() = R.layout.activity_listener + + override fun initView() { + mToolbar.title = "ListenerExtActivity" + } + + override fun initData() { + listenerEt.textWatcher { + onTextChanged { s, start, before, count -> + toast(s.toString()) + } + + afterTextChanged { toast(it.toString()) } + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_listener.xml b/app/src/main/res/layout/activity_listener.xml new file mode 100644 index 0000000..14584fb --- /dev/null +++ b/app/src/main/res/layout/activity_listener.xml @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/mainStyles.xml b/app/src/main/res/values/mainStyles.xml index fed0436..b7610f6 100644 --- a/app/src/main/res/values/mainStyles.xml +++ b/app/src/main/res/values/mainStyles.xml @@ -14,4 +14,23 @@ @color/black @drawable/ripple + + \ No newline at end of file diff --git a/ktx/src/main/java/luyao/util/ktx/ext/ListenerExt.kt b/ktx/src/main/java/luyao/util/ktx/ext/ListenerExt.kt new file mode 100644 index 0000000..bb45ba2 --- /dev/null +++ b/ktx/src/main/java/luyao/util/ktx/ext/ListenerExt.kt @@ -0,0 +1,46 @@ +package luyao.util.ktx.ext + +import android.text.Editable +import android.text.TextWatcher +import android.widget.TextView + +/** + * Created by luyao + * on 2019/7/9 16:13 + */ + +fun TextView.textWatcher(watcher: KtxTextWatcher.() -> Unit) = + addTextChangedListener(KtxTextWatcher().apply(watcher)) + +class KtxTextWatcher : TextWatcher { + + private var _afterTextChanged: ((Editable?) -> Unit)? = null + private var _beforeTextChanged: ((CharSequence?, Int, Int, Int) -> Unit)? = null + private var _onTextChanged: ((CharSequence?, Int, Int, Int) -> Unit)? = null + + + fun afterTextChanged(listener: ((Editable?) -> Unit)) { + _afterTextChanged = listener + } + + fun beforeTextChanged(listener: (CharSequence?, Int, Int, Int) -> Unit) { + _beforeTextChanged = listener + } + + fun onTextChanged(listener: (CharSequence?, Int, Int, Int) -> Unit) { + _onTextChanged = listener + } + + override fun afterTextChanged(s: Editable?) { + _afterTextChanged?.invoke(s) + } + + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + _beforeTextChanged?.invoke(s, start, count, after) + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + _onTextChanged?.invoke(s, start, before, count) + } + +} \ No newline at end of file