LivedPagedListで件数が0件のときの挙動を制御する
Paging libraryを使ってNetworkからdataをfetchする時、fetchは成功しているが件数が0件をどう検知するかにちょっと悩んだのでメモ。
viewModel
imageData = LivePagedListBuilder(factory, config).build()
fragment
viewModel.imageData.observe(this, Observer{ Timber.d("imageData is observed") })
こんなコード書く時(DataSourceは略)
続きを読むRetrofitでJson以外のresponseでのMalformedJsonExceptionに対応する
APIがJsonではなく例えばStringなどJsonではない値を返す場合、retrofitのconverterにGSONしか追加していないと以下のエラーが発生する。
com.google.gson.stream.MalformedJsonException: Expected value at line 1 column 6 path
そんな時はRetrofitにconverterを指定できる。今回の場合のようなprimitiveな値を扱う場合はScalars Converterが使える。
続きを読むCircleCI上でlicences have not been acceptedに対応する
CircleCI上で Failed to install the following Android SDK packages as some licences have not been accepted.
のエラーでBuildが失敗する時の対応についてもメモ。他にもいろんな方法があるっぽい…が一例として。
特にCI上で使用しているdocker imageはcircleci/android:api-28-node8-alpha
の場合。
getComponentsDrawable()がnullになるとき
メモです。
TextView等でdrawableStart/drawableEndを使ってicon等のリソースを設定している場合などで
getComponentsDrawable()
を使うと大概の場合は特に問題なく動くが、稀にnullが帰ってくる場合がある。(drawableRight/Leftを使っている場合は問題ない)
続きを読むRxJavaのsubscribeOnとobserveOnの違いを理解したい
今更ながらRxJavaのsubscribeOnとobserveOnの違い、使い分けがわからなかったので理解するときに参照した記事と動かして試したこととのメモです。
こちらの記事を参考にしました。
http://reactivex.io/documentation/operators/subscribeon.html https://gfx.hatenablog.com/entry/2015/12/12/231203 https://stackoverflow.com/questions/46070235/switching-threads-multiple-times-in-rx-chain
observeOn
はそれ以降の処理をどのスレッドで行うかを指定するので長い処理の中で何回も指定されることがある。一方subscribeOn
は文字通りsubscribeされたときのスレッドを指定するものなので何回も指定するものではない。syntax上は何回でも指定できるが、実際は最初に指定されたスレッドで処理が行われる。
API23以下でも<item>で幅/高さを設定したい
layer-listでdrawableファイルを書く時等で、読み込むiconの表示幅/高さなどを変えたい時のメモ。 具体的には左を右のようにしたい時。
API23以降だとitem要素にwidthとheightが設定できる
続きを読む