Spinnerで動的にvalues/xmlのstring-arrayな文字列配列を制御する

表題の通り。

静的な文字列リソースはxmlで定義しますよね。

親の配列をまずスピナーで表示させて、選択されたらその選択に応じて子スピナーの配列を動的に制御したいなと思ったんですよ。

ただR.javaは全部数値で管理されてるので、文字列云々を使えない。

これはよろしくないということでちょっとサンプルを作ってみました。

strings.xml

親のスピナーで選ぶ item の名前と同じ string-array で子スピナーにしたい string-array を作る。

Spinnerをレイアウト

layout ファイルにスピナーを2つ作る。

Activityで実装

ここが本題。

選択したアイテム文字列でそのままリソース指定はできない( R.array. + “String” みたいに)ので、getIdentifier() を使っていったんリソースIDとして string-array を取得。

そのリソースIDを配列にしてアダプタに入れ、スピナーに渡してみた。

 

こんな感じで動作します。

起動
起動
親とみなしたスピナーで選ぶと
親とみなしたスピナーでアイテム選ぶと

 

子とみなしたスピナーが動的に切り替わる
子とみなしたスピナーが動的に切り替わる
日本語も文字列合わせればOK。
日本語も文字列合わせればOK。

日本語のリソースはこんな感じ。

 

さいごに

string-arrayじゃなくてもdrawableであろうがxmlで作った配列を好き放題動的に取得できますね、これを使いこなせば素敵になれそう。

もっといいやり方があったら教えてくださーい。

写真だとわかりづらいので、興味ある方はサンプルアプリ置いときますのでどうぞ。

関連記事

コメントを残す

メールアドレスが公開されることはありません。