Mono Works

チラシのすきま

メモ:android:entriesの本領

シルバーウィークと、その後ひとつのメモ書きを挟んで、かなり時間が経ってしまいましたが、前々回、ListViewを使ってリストを表示する方法を紹介しました。その最後にandroid:entries="@array/データ群の名前"を利用して、ListViewをレイアウト要素へ置き換える方法を紹介しましたが、android:entries="@array/データ群の名前"には、さらに応用を利かせた使い方(こっちの方が本来の使い方かな)があったので、今回は、その使い方についてメモを残します。

とか書きながら、前々回の記事を見直しておこうとブログページ開いたら、剛力さんがうちのサイトにいらっしゃるじゃありませんか!

androiddevmemo20150925_01

こちらが記念のスクリーンショット。アイコン見切れてますが剛力さんとのツーショットです。 というわけで、あらためてメモをどうぞ

前回のコード

こちらが前回リスト表示をおこなうために記述したコードです。

データファイル:lists.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="listData">
        <item>data01</item>
        <item>data02</item><item>data39</item>
        <item>data40</item>
    </string-array>
</resources>

レイアウトファイル:activity_main.xml

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:entries="@array/listData"/>

この中で、「android:entries="@array/データ群の名前"」をデータファイル内のデータを配置(レイアウト)するためだけに使っていましたが、「android:entryValues="@array/データ群の名前"」とセットで使うことで、表示されたリストの中からいずれかを選択すると、選択されたリストの値を保存することができるようになります。本来の使い方としては、こちらの方が本領発揮といったところなのかな。

android:entries="@array/データ(リストに表示する文字列)群の名前"

android:entryValues="@array/データ(各文字列を選択した際に保存する値)群の名前"

今回のコード

具体的には、下記のように「entryValues」に関する記述を追加します。

新しいデータファイル:lists.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="listData">
        <item>data01</item>
        <item>data02</item><item>data39</item>
        <item>data40</item>
    </string-array>
    <string-array name="listData_values">
        <item>d1</item>
        <item>d2</item><item>d39</item>
        <item>d40</item>
    </string-array>
</resources>

新しいレイアウトファイル:activity_main.xml

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:entries="@array/listData"/>
          android:entryValues="@array/listData_values"/>

これで、リストに表示された「data01」を選択すると「d1」を、「data39」を選択すると「d39」を値として保存する準備が整うことになります。実際に値を保存するには、String型の値を SharedPreferencesに保存する ListPreferenceなどと一緒に使うことになるそうですが、ここから先は勉強不足のため、また後日。

【参考サイト】

android:entries | android:entryValues | Android Developers

コメント

コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)
執筆者
"ぽぽろんち" @pporoch
pporoch120
Mono Worksの中の人。好きなことをつらつらと書き留めてます。
ギターを始めてから 練習動画をYouTubeにアップしてます。ご笑納ください。
"DQX@ぬここ(UD487-754)、コツメ(NO078-818)"
採用案内