■スピナー


スピナーというと聞きなれないコントロールですが、いわゆるVisualBasicで言うコンボボックスです。



コントロール自体をクリックすると選択肢が表示されます。




import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ArrayAdapter ar=new ArrayAdapter(this, android.R.layout.simple_spinner_item);
        ar.setDropDownViewResource(android.R.layout.simple_spinner_item);
        ar.add("aaa");
        ar.add("bbb");
        ar.add("ccc");
        android.widget.Spinner sp=new android.widget.Spinner(this);
        sp.setAdapter(ar);
        setContentView(sp);
        sp.setOnItemSelectedListener(new android.widget.AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(android.widget.AdapterView<?> parent, android.view.View view,int position, long id){
                android.util.Log.d("選択されたアイテム",(String)parent.getSelectedItem());
            }
            @Override
            public void onNothingSelected(android.widget.AdapterView<?> parent){}
        });
    }
}


上のプログラムでは動的にスピナーを作成して、アイテムを設定し、アイテムが選択された時に選択されたアイテムをログに出力するという動作を行っています。
スピナーをクリックした時の選択肢の表示位置は自動的に最適な位置に表示されます。
リソースのスピナーを利用するにはプログラムの緑色の行を削除して次のように変えます。

android.widget.Spinner sp=(android.widget.Spinner)findViewById(R.id.spinner);



■リソースから選択肢を設定する


選択肢を設定する時にjavaで、

ar.add("aaa");
sp.setAdapter(ar);
このように手動で設定していますが、 リソースで選択肢を設定するには次の様にします。
ただし、リソースで設定した場合にはsetAdapter(ar)の行を削除しておかないと書き換えられてしまうので注意です。

▼選択肢のリストを準備

res\values\strings.xml
<resources>
    <string name="app_name">My Application</string>
    <string-array name="test_item">
        <item>item1</item>
        <item>item2</item>
        <item>item3</item>
    </string-array>
    </resources>


▼画面のリソースに選択肢のリストを適用

res\layout\activity_main.xml
<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/spinner"
    android:entries="@array/test_item"
    />

各リソースに赤文字の行を追加するとスピナーに選択肢を設定することができます。


▲トップページ > android