Help us understand the problem. What is going on with this article?

2年目ポケモントレーナー系SEのandroidアプリ開発まとめ〜1日目〜

More than 1 year has passed since last update.

はじめに

本当は「Fラン文系でもわかるプログラミング」シリーズとして書いていきたかったのですが、
1. 記事一つあたりに費やすエネルギーが尋常じゃないこと
2. 記事を書くために調べるより、開発するために調べたことで記事を書くほうが有意義だと思ったこと
3. ちょっとずつじゃないと続かないと気づいたこと

以上の3点の理由により、今日から新シリーズ「2年目ポケモントレーナー系SEのandroidアプリ開発まとめ」シリーズで記事を書いていきたいと思います。

下記URLのInstagramCloneAppを進めていく上で初めて知ったこと、つまづいたこと単位でまとめていきたいと思っています。
https://www.youtube.com/channel/UCoNZZLhPuuRteu02rh7bzsw
なお、すでに40パートほど進めてあります。

LayoutInflaterクラス

xmlファイルを対応するViewオブジェクトにインスタンス化するために使用される。
Inflatingとは、レイアウトを記述するxmlファイルを読み込み、
それに対応する実際のオブジェクトを作成し、オブジェクトをandoroidアプリ内で可視化することを意味する。

参考:https://code.i-harness.com/ja/q/350fae

xmlファイルからViewを生成する時にLayoutInflater#inflate()を使用する。
関数呼び出しのパターンと解説は以下の通り。

1. inflate(int resource, ViewGroup root)
   Inflate a new view hierarchy from the specified xml resource.

2. inflate(XmlPullParser parser, ViewGroup root)
   Inflate a new view hierarchy from the specified xml node.

3. inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot)
   Inflate a new view hierarchy from the specified XML node.

4. inflate(int resource, ViewGroup root, boolean attachToRoot)
   Inflate a new view hierarchy from the specified xml resource.

調べたところ、「指定したxmlのレイアウト(View)リソースを利用できる仕組み」というのが一番しっくりきた。
xmlをViewに変換して表示させるために使用するみたい。

"Inflate"って単語はこの業界じゃ結構ポピュラーな言葉なのかしら?
android特有のクラスかと思っていたら、java標準のクラスだったので、覚えておいたほうが良さそう。
android特有のクラスでした。。。
リファレンスはこちら。
https://developer.android.com/reference/android/view/LayoutInflater
ちなみに僕がみていたのはこちら。
http://cr.openjdk.java.net/~iris/se/11/latestSpec/api/java.base/java/util/zip/Inflater.html
Inflater自体は他でも存在していることがわかったので結果オーライ。

ちなみに使用しているコードはこんな感じ。

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.dialog_confirm_password, container,false);
    mPassword = view.findViewById(R.id.confirm_password);

    TextView confirmDialog = (TextView) view.findViewById(R.id.dialogConfirm);
    -------以下略-------

今回は他の画面からパスワード入力用のダイアログを表示する際にinflaterを渡してあげて、それを使ってダイアログのViewを取得してます。

LayoutInflater#inflate

ビューを定義するres/layout/*.xmlファイルをアプリケーションのソースコードで使用可能な実際のViewオブジェクトに変換する手段を提供する。
実際にレイアウトをオブジェクト化しているのがこの関数のよう。

Viewクラス

Viewクラスは、ビューの土台となる機能を持っているクラス。
ビューとなるクラスは、このクラスを継承する。
参考:https://mitoroid.com/category/android/android_view_class.php

レイアウトに配置した色々なwidget(TextViewやImageView)が入ってくる。
スーパークラスで受け皿として使うことが多そう。

まとめ

今日はLayoutInflaterViewについて。
これからちょっとずつ記事の質をあげていきます。
お疲れ様でした。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away