-
Notifications
You must be signed in to change notification settings - Fork 7
/
RxBindingExampleActivity.kt
69 lines (58 loc) · 2.33 KB
/
RxBindingExampleActivity.kt
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.example.rxjavalecture.rxbinding
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import com.example.rxjavalecture.R
import com.example.rxjavalecture.databinding.ActivityRxBindingExampleBinding
import com.jakewharton.rxbinding3.view.clicks
import com.jakewharton.rxbinding3.widget.textChanges
import io.reactivex.disposables.CompositeDisposable
import java.util.concurrent.TimeUnit
class RxBindingExampleActivity : AppCompatActivity() {
private lateinit var binding: ActivityRxBindingExampleBinding
private val compositeDisposable = CompositeDisposable()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_rx_binding_example)
var clickedCount = 0
compositeDisposable
.add(
binding
.btnBindingClick
.clicks()
.subscribe({
binding.tvClickTime.text = String.format("클릭된 횟수 : %d", ++clickedCount)
}, { it.printStackTrace() })
)
var throttleClickedCount = 0
compositeDisposable
.add(
binding
.btnThrottle
.clicks()
.throttleFirst(1000, TimeUnit.MILLISECONDS)
.subscribe({
binding.tvClickTimeThrottle.text = String.format("클릭된 횟수 : %d", ++throttleClickedCount)
}, { it.printStackTrace() })
)
compositeDisposable
.add(
binding
.etTextChange
.textChanges()
.subscribe({
binding.tvEditTextResult.text = String.format("입력된 text : %s", it)
}, { it.printStackTrace() })
)
compositeDisposable
.add(
binding
.etSearch
.textChanges()
.debounce(1000, TimeUnit.MILLISECONDS)
.subscribe({
binding.tvSearchText.text = String.format("입력된 text : %s", it)
}, { it.printStackTrace() })
)
}
}