LoginSignup
4
3

More than 1 year has passed since last update.

[Android]思考停止でセットしていたLayoutInflaterを少し掘り下げてみる

Posted at

質問箱にて

このような質問を頂いたので、書いている次第でございます。
LayoutInflaterは、RecyclerviewのonCreateViewHolderとか、FragmentのonCreateViewメソッドのパラメータとしてよく使われますね。

正直、全く理解していません。
何なのでしょうか?
掘り下げてみましょう。

簡単に説明すると

英語の意味として、inflateが「膨らませる」という意味で、なんとからーは○○をする人という意味なので、inflaterは「膨らます奴」ですね。
そして、LayoutInflaterは、レイアウトを「膨らます奴」です。

これだけで、考えるという観点ではLayoutInflaterを扱えるので、思考停止は免れたかと思います。

もう少し掘り下げてみる

よくFragmentにてViewを生成する時に、LayoutInflaterクラスのinflateメソッドを用います。

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);

        return inflater.inflate(R.layout.hogehoge, container, false);
    }

そもそも、FragmentとはActivityを容器としてその中に部分的な画面として表示します。
ここからActivityという容器の中で、膨らませるようなイメージが出来るかなと思います。

LayoutInflaterという「膨らます奴」が、Activityという「容器」の中で、inflateという「膨らます」行為をしているわけですね。

もう少し、理論的にいうとXMLファイルを直接インスタンスせずに利用するイメージです。

第一引数は、「膨らます」XMLファイルを指定します。
第二引数は、ViewGroupでネストの一番外側のビューを表します。
第三引数は、第一パラメータで指定したレイアウトをルートビューにするか否かを

ちなみに、質問者さんのonCreateViewHolderもRecyclerViewという「容器」の中で一行分のレイアウトを「膨らませて」作っています。
この膨らませた一行分のレイアウトを使い回しているわけですね。

終わり

質問者さんに満足していただいた記事は書けたのかな・・・
もっと深掘った方が良かったのかな・・・・
取り敢えず、今の自分が掘れる範囲はここまででした。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3