Spinner | Android Developers
http://developer.android.com/intl/ja/resources/tutorials/views/hello-spinner.html
JavaScriptのセレクトオブジェクト、C#等のコンボボックスですね。HelloSpinnerというプロジェクトを作成します。
res/layout/main.xmlを開き、以下のように変更します。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:padding="10dip" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:text="@string/planet_prompt" /> <Spinner android:id="@+id/spinner" android:layout_width="match_parent" android:layout_height="wrap_content" android:prompt="@string/planet_prompt" /> </LinearLayout>res/values/strings.xmlを開き、以下のように変更します。
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, HelloSpinnerActivity!</string> <string name="app_name">HelloSpinner</string> <string name="planet_prompt">Choose a planet</string> <string-array name="planets_array"> <item>Mercury</item> <item>Venus</item> <item>Earth</item> <item>Mars</item> <item>Jupiter</item> <item>Saturn</item> <item>Uranus</item> <item>Neptune</item> </string-array> </resources>HelloSpinnerActivity.javaを開き、以下のように変更します。
package jp.blogspot.logroid.helloSpinner; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.Spinner; public class HelloSpinnerActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); } }Spennerのアイテムが選択された際にアプリケーションに通知を行うコールバックメソッドを定義します。 HelloSpinnerActivity.javaを開き、以下のように変更します。
package jp.blogspot.logroid.helloSpinner; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; public class HelloSpinnerActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); } public class MyOnItemSelectedListener implements OnItemSelectedListener { public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { Toast.makeText(parent.getContext(), "The planet is " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show(); } public void onNothingSelected(@SuppressWarnings("rawtypes") AdapterView parent) { // Do nothing. } } }MyOnItemSelectedListenerをSpennerに登録します。 HelloSpinnerActivity.javaを開き、以下のように変更します。
package jp.blogspot.logroid.helloSpinner; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; public class HelloSpinnerActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(new MyOnItemSelectedListener()); } public class MyOnItemSelectedListener implements OnItemSelectedListener { public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { Toast.makeText(parent.getContext(), "The planet is " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show(); } public void onNothingSelected(@SuppressWarnings("rawtypes") AdapterView parent) { // Do nothing. } } }実行します。
今回出てきたキーワードについて解説。
- Spenner
JavaScriptでのセレクトオブジェクト、C#でのコンボボックス
- setDropDownViewResource
Spennerで表示されるビューを指定
- simple_spinner_dropdown_item
Androidで定義されているレイアウトファイルのID setDropDownViewResourceにセットすると、項目の隣にラジオボタンのようなオブジェクトが表示される
- setOnItemSelectedListener
Spennerのアイテムがセレクトされた際のイベントリスナ登録
- getItemAtPosition
選択されたビューの取得
- @SuppressWarnings
Javaのアノテーション parentがraw型とのことで、警告が発生したため、@SuppressWarnings("rawtypes")を追記。 これで警告を無効化できます。
0 件のコメント:
コメントを投稿