C-FRONT

エモくありたい

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に対応する

APIJsonではなく例えば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の場合。

続きを読む

ICU4JをAndroidで使う時

Unicodeの文字変換を行えるICU4jというライブラリをAndroidで使う時に遭遇したことや対応したことなどのちょっとしたメモです。

一言でいえばここを見れば済む話である。

Unicode and internationalization support  |  Android Developers

最新versionの63.1を使用するとAPI level23以下のデバイスでは次のようなエラーでアプリが落ちる。 (自分の場合は半角文字を全角文字に変換するという処理の時で使っていて遭遇)

続きを読む

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上は何回でも指定できるが、実際は最初に指定されたスレッドで処理が行われる。

続きを読む