B-Teck!

お仕事からゲームまで幅広く

【Android】syntheticsのサポートが終了するのでViewBindingを使ってみた

なぜViewBindingの導入をしたか

Kotlin Android ExtentionのSyntheticsなどが非推奨になったため。

Kotlin Android Extensions の未来

Syntheticsがなぜ非推奨になったのか

  • どこからでも参照できてしまうのでネームスペースがごちゃごちゃになる
  • Nullの可能性の情報を公開しないので、常にNullableとして扱う必要がある
  • Kotlinでしか動作しない

ViewBindingの利点

  • DataBindingとbindingの扱い方がほぼ同じ
  • Bindingクラスが自動生成されるのでコードが必ずレイアウトに対応する
  • Null安全
  • Javaでも動く

導入

buildFeaturesに設定値を追加すると、Viewに対応するBindingクラスが自動生成される。

buildFeatures {
    viewBinding true
}

自動生成されたクラスをViewのOnCreateで読み出し利用する。

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.androidfundamentals.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
    private lateinit var binding : ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.textView1.text = "test"
    }
}

参考にしたサイト

matsudamper.hatenablog.com qiita.com

緩い完了条件と開始時間を決めると習慣化に成功する(かも)

習慣を続けるのは難しい

英語を勉強する、毎日運動をする、机の周りを片付ける…
この記事を読んでいる方にもいろいろな習慣があると思います。
こういう習慣、きちんと続いていますか?
今日はいいや…って後回しになりがちじゃありませんか?
私も、色々なことを習慣づけようとしてはうまく行かず、投げ出してきました。

なんとなく続かないものには原因があるのかもしれないと思い、
理由を自分なりに考えてみました。

とことん低い目標を立てる

一番最初に思いついた理由は、掲げる目標が曖昧だったり、高すぎるということでした。

曖昧な目標は例えば、「毎日読書をする」みたいなふわっとした目標を立ててみたものの、
実際どのくらい読めば納得できるのかわからない…とみたいになってしまったり。

高すぎる目標であれば、「毎日100回スクワット」みたいな目標を立てて、 普段運動してないから辛くなってしまい、数日休んでそのままやらなくなってしまったり。

こうならないために、「とことん低い目標を立てる」ということをしてみました。
本を10ページだけ読む、英語のアプリを1周だけやる、みたいな感じで、
取り掛かるハードルが低くて、まず達成できそうな目標を設定します。

もし気分が乗ってもっとやりたくなれば続ける、だめだったら切り上げる。 そのくらいの緩さのほうが続けやすそうです。

やり始める時間を決める

達成するハードルが低くても、やらなきゃならないことをやり始めるのって億劫じゃないですか。

なんとなく別のことがやりたくなって、ズルズル先延ばししてるうちに寝る時間になって、
今日はもういいかな…みたいなことありますよね。

こうならないようにするには、「やり始める時間を決める」というのが良さそうでした。

時間になったら、嫌でも、やりたくなくても、とりあえず動き始める。
そう決めておくことで、自分の気持ちで取り掛からない、ということをなくします。

もちろん、仕事や他の用事のせいで同じ時間に出来ない日なんかはあります。
でも、時間を過ぎてるからササッとやってしまおう、となったり、
今日はこの時間忙しそうだから先に済ませておこう、なんて配分も出来るようになります。

続けるために

これを意識するようになってから、私は比較的うまく習慣化が続いています。
もちろんそんなにうまく行かないよ、とかそれが出来れば苦労しない!と思う人もいるかも。

でも、目標を立てているということは何かを成したいと思っているはず。
どんなに小さい目標でも、行動でも、続けていればいずれスケールしていきます。
その意志力で、まずは一つ、私と一緒に動き始めてみませんか?

【Notion】無理やりトグルできるタグフィルタを作ってる

Notionを使い始めました。
意気揚々と情報を集約してるんですけど、 NotionのSortやFilterってViewに紐づく概念で、検索結果を絞り込みたい〜みたいな用途で使うものではなさそうなんですよね。
でも、自分の用途的には特定のジャンルに絞り込んで一覧を眺めたり、を同じビューでやりたいんです。

なので、こんなフィルタを作って運用してます。
f:id:beatdjam:20201212111451p:plain
f:id:beatdjam:20201212111515p:plain

  • 絶対にタイトル(Name)を入力するようにして、 Name Is not empty ですべてのView内のデータが引っかかるようにする。
  • Tags Contains {Hoge} を設定する
  • フィルタを解除したいときは Or に、絞り込みたいときは And にして Tags を指定する
    Select、Multi SelectのFilterは、一度指定したoptionをクリア出来ないので…

これで、任意のタグで絞り込みを行えるビューを用意することが出来ます。
ホントはSearchのオプションをGUIでいじれたりすればこんな考慮は不要なんですけどね…