平凡エンジニアからの出発

一に努力、二に理想、三に積小為大。

【AndroidTraining】ListView 2

Lesson

ListView 2

Mission

下記の仕様を満たすアプリを作りましょう。

  • 動的に、ListViewに曜日の一覧を表示する。

Snap Shot

f:id:atuyan39:20210405234532p:plain
ListView 2

Step by Step

1 . ListView 1で作ったコードのxmlからentriesの属性を消去する
2 . リストを用意する

 // ListViewに表示するリストを用意します。
        List<String> list = new ArrayList<>();
        list.add("月曜日");
        list.add("火曜日");
        list.add("水曜日");
        list.add("木曜日");
        list.add("金曜日");
        list.add("土曜日");
        list.add("日曜日");

3 . ListViewのViewを取得する

        // ListViewのViewを取得します。
        ListView listView = findViewById(R.id.list_view);

4 . Adapterを作成する

        // ListViewにリストをセットするために、Adapterを用意します。
        // android.R.layout.simple_list_item_1は、Androidがすでに用意しているリソースになります。
        // →TextViewがあるLayoutというシンプルなレイアウト。
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list);

5 . ListViewにAdapterをセットする

        // ListViewに作成したAdapterをセットして完了。
        listView.setAdapter(adapter);

Code

ListView 2 · atuyan39/AndroidTraining@620e551 · GitHub

Reference

レイアウトについて勉強(前編)

developer.android.com

View=ウィジェット

View オブジェクトは、通常「ウィジェット」と呼ばれ、Button や TextView など、多くのサブクラスのいずれかになります。

ViewGroup=レイアウト

ViewGroup オブジェクトは、通常「レイアウト」と呼ばれ、LinearLayout や ConstraintLayout など、さまざまなレイアウト構造を提供する多くのタイプのいずれかになります。

責務を分けることが大事

XML で UI を宣言すると、アプリの動作を制御するコードから、アプリの表示を切り離すことができます。また、XML ファイルを使用することで、画面サイズと画面の向きに合わせてさまざまなレイアウトを簡単に提供できます

Viewリソースとは?

アプリをコンパイルすると、各 XML レイアウト ファイルは View リソースにコンパイルされます。

属性=attributes

View オブジェクトと ViewGroup オブジェクトはすべて、独自のさまざまな XML 属性をサポートしています。

コンパイルによって、参照しやすくなる

アプリがコンパイルされると、この ID が整数として参照されますが、この ID は通常、レイアウト XML ファイルの id 属性で、文字列として割り当てられます。

@+に、そんな意味があったのか。。

android:id="@+id/my_button"
文字列の先頭にあるアットマーク(@)は、XML パーサーが残りの ID 文字列をパースして展開し、ID リソースとして識別する必要があることを示します。プラス記号(+)は、これが新しいリソース名であり、リソースを作成して追加する(R.java ファイル内)必要があることを示します。

XMLパーサ : XMLファイルの中身を使いやすい形に整形してくれるプログラム
from : https://wa3.i-3-i.info/word13628.html

すでにAndroidリソースIDが振ってあるものは、@android:を付ける。

Android リソース ID を参照するときは、プラス記号は必要ありませんが、次のように android パッケージ名前空間を追加する必要があります。
android:id="@android:id/empty"
android パッケージの名前空間を指定することで、ローカル リソースクラスではなく、android.R リソースクラスの ID を参照するようになります。

idはスネークケースsnake_caseが公式?

android:id="@+id/my_button"

Relativelayoutで必須

ビュー オブジェクトの ID を定義することは、RelativeLayout を作成する際に重要です。相対レイアウトでは、兄弟ビューは一意の ID によって参照される別の兄弟ビューに対して相対的にレイアウトを定義できます。

いつか記事にまとめたい

Android Studio 3.6 以降では、ビュー バインディング機能を使用して...

親のViewGroupの属性を子のViewは引き継ぐが、子のViewGroupの属性は親の属性を引き継ぐわけではない、ということか?

すべての ViewGroup クラスでは、ViewGroup.LayoutParams を拡張するネストされたクラスが実装されます。このサブクラスには、各子ビューのサイズと位置を ViewGroup に合うように定義するプロパティ タイプが含まれています。

いつもお世話になっております

wrap_content は、ビューのサイズをそのコンテンツに必要なサイズにします。 match_parent は、ビューのサイズを親ビューグループで許容される最大サイズにします。

Memo

Android Developerをゆっくり読む時間がなかなか取れないが、結構面白い。