Kotlin
### 結論 まずはItemDecorationのサブクラスを作成。getItemOffsetsメソッドで、それぞれのItemのオフセットをポジションなどによって調整します。 class GridSpacingItemDecoration( private val spanCount: Int, private val spacing: Int, private val in…
iOSのUICollectionViewのようなグリッドレイアウトをAndroidでどのように作るのか分からなかったので簡単にメモを♀️ 結論 RecyclerViewを使って、グリッドレイアウトを構築できるようです。 ということで、早速使ってみます。 まずは、Fragment内にRecycler…
結論 RxKotlinの場合はdoOnErro()オペレータを使って、ストリームにErrorが流れた時をトリガーに処理を実行することができます。下記の例では、Firebase上でユーザを作成する際に、Errorハンドリングとして、AuthのcurrentUserを削除するようにしています。 …
〇〇の処理をした時に、AとBの異なる型の値を返したい!という時ありますよね。Swiftでは下記のように、シンプルにタプルで返せば良かったのですが、Kotlinではこの書き方ができなかったのでメモしておきます♀️ func hoge() -> (Int, String) { return (1, …
結論 Kotlinでは下記のように、constructor()キーワードを使うことで、セカンダリーコンストラクターとして、引数に応じてClassを初期化することができるようです。Swiftでは、init()で初期化方法を分けることができましたよね override var instagram: Stri…
本日は、Firestoreの不可分操作の一つである、バッチ書き込みを使ってみたいと思います♀️ 不可分操作(アトミックオペレーション)は、複数の操作を一つの操作として扱うことで、全ての操作が成功、又は失敗するように処理を行うことを指します。Firestoreで…
Unitとは? Javaのvoidに対応する、Kotlinのオブジェクトのようです。 The type with only one value: the Unit object. This type corresponds to the void type in Java. つまり、下記のような戻り値のない関数などは、Kotlinではvoidではなく、Unitが返さ…
結論 Swiftだとguardがあるので、下記のようにオプショナル値をアンラップできます。 guard let a = optionalA, let b = optionalB, let c = optionalC else { return } Kotlinの場合は、下記のようなメソッドを作ることで、Swiftのguard let else的なことを…
今回はとりあえずKotlinでUnitTestをするための爆速記事です。 結論 とりあえず、UnitTestを行うために下記をGradleファイルに追加します。 testImplementation 'junit:junit:4.12' testImplementation 'androidx.test:core:1.0.0' testImplementation 'org.…
Android・Kotlinで、Firebase Authenticationを使った、メールアドレスによるSignIn・SignUpの実装をしたので、簡単に手順をまとめてみたいと思います♀️ やっていく まずはFirebase Authentication Androidライブラリを、アプリレベルのGradleファイルに記…
Kotlinのdata classでinterfaceに準拠する際の書き方をメモ 結論 data classのイニシャライザに、Sportのインターフェースを含める場合には、下記のようにoverrideでプロパティを宣言する必要があるみたいです✍️ interface Sport { var name: String } data …
スマートキャストとは? スマートキャストは、型判定とキャストが同時に行われる、Kotlinコンパイラの仕組みのことをいいます。 使い方 Kotlinではis演算子を使うことで、下記のようにスマートキャストが行われます。 fun demo(x: Any) { if (x is String) {…
結論 普通にオプショナル値をアンラップしたい場合は、以前の記事でも紹介したように、let { }を使います。 val num: Int? = null num?.let { println(it) } アンラップできた場合とできなかった場合で処理を分岐をする場合は、下記のようにalsoとrunを使っ…
Swift同様に、KotlinにもResult型があったので、簡単に使い方をまとめてみます👷♀️ とりあえず使う とりあえず、成功した場合と失敗した場合のハンドリングしたい場合はこんな感じで、Swiftよりもスマートに書ける印象。 val result: Result<Int> = Result.success</int>…
Kotlinでも普通に三項演算子が使えると思ってたら、使えないみたいなので簡単にメモを残しておきます♀️ val max = (a > b) ? a : b // 三項演算子の代わりに、普通にIf式を使うとそれっぽくかけるらしいです。 val max = if (a > b) a else b // // ... i…
結論 下記のようにContextにExtensionを生やして、システムデフォルトのローディングインジケーターを取得することができます。drawableの生成だけだと、アニメーション化されないため、(drawable as? Animatable)?.start()でアニメーションを開始させていま…
今回はタイトルの通り、Kotlin でちょろっと正規表現を行ったのでそのメモです。 結論 Kotlin ではこんな感じで行える見たいですね。正規表現を """ で囲むことで、エスケープが必要にならないのでシンプルに記述することができます。 val pattern = """"^[A…
RxKotlin で実行する Observable のスレッドをどのように切り替えるのか調査したので、調べた内容を簡単にまとめておこうかと思います それではやっていく まずは、Android プラットフォーム上のメインスレッドで処理を実行できるようにしてみます。Android …
Text の変更を取得しようと下記のよう、Listener を追加すると謎のエラーが発生しました。 binding.accountNameInputTextField.addTextChangedListener { println(it.toString()) } // Cannot inline bytecode built with JVM target 1.8 into bytecode that…
絶賛個人開発中のアプリで Clean Architecture を採用していて、DI(Dependency Injection) Framework の Koin を使う機会があったので、その使用方法をメモ程度に残しておきたいと思います♂️ github.com それではやっていく まずは、App レベルの build.gra…
本日はタイトルの通り、Android で View の background リソースをアニメーションさせながら変更する方法を紹介したいと思います それではやっていく まずは、アニメーションの初期状態の drawable とアニメーション後の drawable をそれぞれ定義しておきま…
今回は、以前の「カスタムビューの作成」に引き続き、カスタムビューでカスタム属性を追加・適用する方法をメモ程度に残しておきます♀️ それではやっていく まずは、カスタム属性を定義するための xml を res/values 配下に attrs_account_type_select.xml …
本日はタイトルの通り、Kotlin + XML で View のコンポーネントを作成する方法を紹介したいと思います。iOS だと Swift + xib で作るカスタムビューみたいな感じのやつです♀️ それではやっていく まずは、view_account_type_select という名前でレイアウト…
Kotlin でのアンラップの仕方をメモしておきます。 結論 こんな感じで、Swiftの if let っぽくアンラップできる。 var name: String? = "" name?.let { println(it) } また、null合体演算子と組み合わせることで、デフォルト値と合わせてシンプルに値を取り…
本日も初歩的な内容ですが、Fragment のイベントを Activity で受け取る実装を行ったので、その方法をメモ程度に残しておきます♂️ それではやっていく Fragment 側の実装は下記のようになります。重要な部分は OnboardSignUpTermsOfServiceListener に関す…
MainActivity から異なるパッケージにある OnboardActivity に Intent を使用して画面遷移しようとしたところ下記のような Error に遭遇していました E/AndroidRuntime: FATAL EXCEPTION: main Process: YamatoOtaka.Fidee.debug, PID: 30741 java.lang.Run…
先日、Kotlin で Firestore を用いて Collection を取得していると下記のような Error に遭遇しました 2020-12-13 11:42:44.547 22551-22551/com.YamatoOtaka.androidsample1 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.YamatoOtaka.androidsamp…
今回は、Kotlin を使って Realm にデータを保存。そして、Realm Studio で保存したデータ確認するまでの手順を紹介したいと思います♀️ それではやっていく 1.プロジェクトレベルの Gradle に下記を追加します。執筆時点では、10.0.1 が最新版でしたがアップ…
今回はタイトルの通り、Kotlin で Activity の画面遷移時にカスタムデータを渡す方法を紹介したいと思います それではやっていく まずは遷移先の Activity に渡すデータクラスを定義し、Serializable に準拠させます。 data class PlaceItemEntity(val nam…
今回は、Android アプリの ActionBar を非表示にし、代わりに Toolbar をつける方法を紹介したいと思います まずは、ActionBar と Toolbar の違いをみていきましょう。 ActionBar ActionBar は、画面上部に位置するバーで、画面のタイトルや重要なアクショ…