以下なリポジトリのソースを確認してみることに。
AndroidStudio にて開くのに少々手間がかかりました。特に最下層の buld.gradle にて
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
}
てなってて 1.1.3
に修正して事無きを得ていたり。
いくつか不明なソレを
列挙してみて調べてみます。
data class
という表現BehaviorSubject
private var mApp: MainApplication by Delegates.notNull()
という表現- Activity が `LoaderManager.LoaderCallbacks
を継承 (?) している件 companion object
という表現- Observable なナニを云々している部分について
- loaderManager が謎
data class という表現
プロパティしか持たないクラスについては簡易に記述ができるようになっているのか。
data class User(val id: String, val name: String)
それだけではないみたいです。
- equals や toString など自動生成
- component 自動で生成
component って属性まとめて取り出せるみたい。
val (foo, bar) = Product("beer", 200)
BehaviorSubject
以下な形で使われています。
/** Called whenever a new character is typed */
val mNameObservable: BehaviorSubject<String> = BehaviorSubject.create()
/** Called whenever we receive a response from the server about a name */
val mUserObservable: BehaviorSubject<JsonObject> = BehaviorSubject.create()
なんとなく
- テキストボックスの中身の状態による処理のため
- 通信戻りの状態による処理のため
というのはなんとなく想像できはしますが細かい部分が微妙。あるいは以下な記述を確認してみるに
// Whenever a new character is typed
WidgetObservable.text(editText)
.doOnNext { e* OnTextChangeEvent =>
addFrientButton.setEnabled(false)
loading.setVisibility(View.INVISIBLE)
}
.map { it.text().toString() }
.filter { it.length() >= 3 }
.debounce(500, TimeUnit.MILLISECOUNDS)
.subscribe {
mNameObservable.onNext(it)
}
- 流れてる途中で呼ばれる doOnNext で入力中はボタン押せないし loading も表示しないように
- map で入力な文字を String にして追加?
- filter で文字数制限
- debounce て何 (上記だと stream の処理を 500ms 待つのかな)
このあたり、がっつり掘ってみたいのですがなかなか時間がとれずorz