[Android] フォームの標準ウィジェット(1) 静的な選択関連 ================================================================================ ウィジェットは、ホーム画面に追加される小さな機能。 Android では、標準で、いくつかのウィジェットを用意している。これらを使って、デー タを表示したり、入力したり、選択したりすることができる。 選択する以下の ウィジェット(Widget)とそのイベント処理。 ・ボタン ・チェックボックス ・トグルボタン ・ラジオボタン ・スピナー ・シークバー(別記) ・レーティングバー(別記) 上記のウィジェットは、それぞれつぎのクラスを使う。また、そのときに使われるリス ナー・インターフェースも示す。 ------------------ -------------- ---------------------------------------------- ウィジェット クラス リスナー・インターフェース ------------------ -------------- ---------------------------------------------- ボタン Button View.OnClickListener, View.OnLongClickListener View.OnTouchListener チェックボックス CheckBox CompoundButton.OnCheckedChangeListener View.OnClickListener, View.OnLongClickListener View.OnTouchListener トグルボタン ToggleButton CompoundButton.OnCheckedChangeListener View.OnClickListener, View.OnLongClickListener View.OnTouchListener ラジオボタン RadioGroup RadioGroup.OnCheckedChangeListener RadioButton スピナー Spinner AdapterView.OnItemSelectedListener View.OnTouchListener シークバー SeekBar SeekBar.OnSeekBarChangeListener View.OnTouchListener レーティングバー RatingBar RatingBar.OnRatingBarChangeListener View.OnTouchListener ------------------ -------------- ---------------------------------------------- このサンプルは、アプリケーションの起動時に選択する値が決まっているパターンを示す。 ▲ レイアウト □ res/layout/main.xml --- <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <!-- (1) ボタン --> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <!-- (2) チェックボックス --> <CheckBox android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="CheckBox" /> <!-- (3) トグルボタン --> <ToggleButton android:id="@+id/toggleButton1" android:layout_width="180dp" android:layout_height="wrap_content" android:text="ToggleButton" /> <!-- (4) ラジオボタン --> <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="@string/listItem0" /> <!-- (5) --> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/listItem1" /> <RadioButton android:id="@+id/radio2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/listItem2" /> </RadioGroup> <!-- (6) スピナー --> <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" android:entries="@array/list1" /> </LinearLayout> --- (1) ボタン クリックする、を実現している基本的なユーザー・インターフェースになっているビュー。 クリック時、長いクリック(長押し)時の処理をハンドラーとしてプログラムする。また、 タッチ時の処理もハンドリングできる。 <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> ボタンに限らず、GUI 部品の属性には、android:onClick 属性があり、クリックされたと きに動くハンドラー・メソッドを指定することができる。 今回は、リスナー・クラスを用意して、それぞれの部品の setOnXxxListener() メソッド でリスナーを登録するので、ここでは指定はしていない。 (2) チェックボックス チェックしている状態とチェックしていない状態の 2 つの状態を持つビュー。 チェックボックスをクリックするたびに、この 2 つの状態が入れ替わる。 <CheckBox android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="CheckBox" /> android:checked 属性が "true" のとき、最初からチェックがついている状態になる。 (3) トグルボタン トグルボタンは、クリックするたびに状態が OFF/ON を繰り返す種類のボタンである。 <ToggleButton android:id="@+id/toggleButton1" android:layout_width="180dp" android:layout_height="wrap_content" android:text="ToggleButton" /> android:checked 属性が "true" のとき、最初から ON の状態になる。 android:text 要素に値を設定しても表示としては変わらない。表示の文字列をデフォル トの「OFF」「ON」から変更するには、android:textOff 属性と、android:textOn 属性を 使う。 (4)(5) ラジオボタン チェックボックスのように、チェックしている状態とチェックしていない状態の 2 つの 状態を持つビュー。 ただし、グループ化することで、そのグループの中ではひとつだけがチェックしている状 態になる。 同じグループは、RadioGroup 要素で囲む。 <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="@string/listItem0" /> <!-- (5) --> android:checked 属性が "true" の項目があれば、それが最初からチェックがついている 状態になる。 (6) スピナー 選択リスト。複数の項目からひとつを選択できるのは、ラジオボタンと同じ。 アプリ起動時に、このリスナーのハンドラーが動く。 <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" android:entries="@array/list1" /> なにも設定しないと、リストの先頭のものが選択された状態になる。 android:entries 属性に、表示する項目のリストを設定する。 この例のように静的な場合は、リソースの <string-array> 要素で設定している。 ※ なお、最初に選択する項目の指定は、プログラムで指定するしかなさそう。 Spinner.setSelection() に相当する XML 属性がない。 ▲リソース値 □ res/values/strings.xml --- <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">FormWidgets01</string> <string name="listItem0">アイスクリーム</string> <string name="listItem1">かりんとう</string> <string name="listItem2">さつまいも</string> <string-array name="list1"> <item>@string/listItem0</item> <item>@string/listItem1</item> <item>@string/listItem2</item> </string-array> </resources> --- string-array 要素を使って、Spinner で使う項目を設定している。 ▲ アクティビティ 単に、Widget にあわせたリスナーを割り当てているだけである。 なお、リスナーはインナー・クラスを使っている。 どのハンドラーが使われたかは、トーストとログで表示している。 □ FormWidgets01Activity.java package jp.marunomarun.android.formwidgets; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RatingBar; import android.widget.SeekBar; import android.widget.Spinner; import android.widget.Toast; import android.widget.ToggleButton; public class FormWidgets01Activity extends Activity { private static final int TOAST_DURATION = Toast.LENGTH_SHORT; private Context context; // (1) /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); context = this; // (2) // ボタン Button button1 = (Button) findViewById(R.id.button1); OnCheckAndLongClickListener clickListener = new OnCheckAndLongClickListener(); OnTouchListener touchListener = new OnTouchListener(); button1.setOnClickListener(clickListener); button1.setOnLongClickListener(clickListener); button1.setOnTouchListener(touchListener); // チェックボックス CheckBox check1 = (CheckBox) findViewById(R.id.checkBox1); check1.setOnCheckedChangeListener(new OnCheckCompoundButtonListener()); check1.setOnClickListener(clickListener); check1.setOnLongClickListener(clickListener); check1.setOnTouchListener(touchListener); // トグルボタン ToggleButton toggle1 = (ToggleButton) findViewById(R.id.toggleButton1); toggle1.setOnCheckedChangeListener(new OnCheckCompoundButtonListener()); toggle1.setOnClickListener(clickListener); toggle1.setOnLongClickListener(clickListener); toggle1.setOnTouchListener(touchListener); // ラジオボタン RadioGroup group1 = (RadioGroup) findViewById(R.id.radioGroup1); group1.setOnCheckedChangeListener(new OnCheckRadioGroupListener()); group1.setOnClickListener(clickListener); // 動かないだけ group1.setOnLongClickListener(clickListener); // 動かないだけ group1.setOnTouchListener(touchListener); // 動かないだけ // スピナー Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); spinner1.setOnItemSelectedListener(new OnItemSelectedSpinnerListener()); // spinner1.setOnClickListener(listener); // RuntimeException) // spinner1.setOnLongClickListener(listener); // RuntimeException spinner1.setOnTouchListener(touchListener); } /** * ボタンのクリック、長クリックに対するリスナー * * @author marunomaruno */ private class OnCheckAndLongClickListener implements View.OnClickListener, View.OnLongClickListener { @Override public void onClick(View v) { String message = String.format( "OnClickListener.onClick() view: %s", v.getTag()); System.out.println(message); Toast.makeText(context, message, TOAST_DURATION).show(); } @Override public boolean onLongClick(View v) { String message = String.format( "OnLongClickListener.onLongClick() view: %s", v.getTag()); System.out.println(message); Toast.makeText(context, message, TOAST_DURATION).show(); return false; } } /** * タッチに対するリスナー * * @author marunomaruno */ private class OnTouchListener implements View.OnTouchListener { @Override public boolean onTouch(View v, MotionEvent event) { String message = String.format( "OnTouchListener.onTouch() view: %s, event: %s", v.getTag(), event); System.out.println(message); Toast.makeText(context, message, TOAST_DURATION).show(); return false; } } /** * チェックボックス、トグルボタンのクリックに対するリスナー * * @author marunomaruno */ private class OnCheckCompoundButtonListener implements CompoundButton.OnCheckedChangeListener { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { String message = String.format( "OnCheckedChangeListener.onCheckedChanged(): view: %s, %b", buttonView.getTag(), isChecked); System.out.println(message); Toast.makeText(context, message, TOAST_DURATION).show(); } } /** * ラジオボタンのクリックに対するリスナー * * @author marunomaruno */ private class OnCheckRadioGroupListener implements RadioGroup.OnCheckedChangeListener { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { RadioButton button = (RadioButton) findViewById(checkedId); String message = String.format( "OnCheckedChangeListener.onCheckedChanged(): %s", button .getText()); System.out.println(message); Toast.makeText(context, message, TOAST_DURATION).show(); } } /** * スピナーの選択に対するリスナー * * @author marunomaruno */ private class OnItemSelectedSpinnerListener implements AdapterView.OnItemSelectedListener { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Spinner spinner = (Spinner) parent; String item = (String) spinner.getSelectedItem(); String message = String .format("OnItemSelectedListener.onItemSelected() parent: %s, view: %s, %d: %s", parent.getTag(), view.getTag(), position, item); System.out.println(message); Toast.makeText(context, message, TOAST_DURATION).show(); } @Override public void onNothingSelected(AdapterView<?> parent) { String message = String.format( "OnItemSelectedListener.onNothingSelected() parent: %s", parent.getTag()); System.out.println(message); Toast.makeText(context, message, TOAST_DURATION).show(); } } --- (1)(2) コンテキスト・オブジェクト 内部クラスでトーストを使っているので、このアクティビティ自身(this オブジェクト) を持っていたほうが都合がよい。 private Context context; // (1) context = this; // (2) (●) ボタン クリックする、を実現している基本的なユーザー・インターフェースになっているビュー。 クリック、長押し時の処理をハンドラーとしてプログラムする。また、タッチ時の処理も ハンドリングできる。 Button button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(clickListener); button1.setOnLongClickListener(clickListener); button1.setOnTouchListener(touchListener); クリックは setOnClickListener()、長押しは setOnLongClickListener()、タッチは setOnTouchListener() を使ってそれぞれのリスナー・オブジェクトを設定する。 クリックのときは、OnTouchListener.onTouch() の ACTION_DOWN イベント、そして ACTION_UP が動く。 この戻り値が false のとき、OnClickListener.onClick()。 まとめると、ACTION_DOWN > ACTION_UP > onClick --- OnTouchListener.onTouch() view: Button, event: MotionEvent{46c1fc70 action=0 ...} OnTouchListener.onTouch() view: Button, event: MotionEvent{46c1fc70 action=1 ...} OnClickListener.onClick() view: Button --- 長押しのときは、クリックに加えて、ACTION_MOVE も動く。 まとめると、ACTION_DOWN > ACTION_MOVE > onLongClick > ACTION_UP > onClick --- OnTouchListener.onTouch() view: Button, event: MotionEvent{46c1fb60 action=0 ...} OnTouchListener.onTouch() view: Button, event: MotionEvent{46c1fb60 action=2 ...} OnLongClickListener.onLongClick() view: Button OnTouchListener.onTouch() view: Button, event: MotionEvent{46c1fb60 action=1 ...} OnClickListener.onClick() view: Button --- △ Button クラス java.lang.Object + android.view.View + android.widget.TextView + android.widget.Button クリックして何らかの動作をさせるためのウィジェット。 Button クラス独自のメソッドはなく、スーパークラスである TextView クラスのメソッ ドをそのまま利用している。 クリックに関しては、通常のクリックと、長クリック(長押し)の 2 つの種類がある。 --- void setOnClickListener(View.OnClickListener l) void setOnLongClickListener(View.OnLongClickListener l) void setOnTouchListener(View.OnTouchListener l) --- (*1) TextView のメソッド △ View.OnClickListener インターフェース android.view.View.OnClickListener クリックに関するリスナー・インターフェース。 このハンドラー・メソッドの onClick() の指定は、ウィジェット上で頻繁に使うことが 多いので、レイアウトの XML ファイルでも、android:onClick 属性として用意されてい る。 ・メソッド --- abstract void onClick(View v) --- △ View.OnLongClickListener インターフェース android.view.View.OnLongClickListener 長押しに関するリスナー・インターフェース。 ・メソッド --- abstract boolean onLongClick(View v) --- (●) チェックボックス チェックしている状態とチェックしていない状態の 2 つの状態を持つビュー。 チェックボックスをクリックするたびに、この 2 つの状態が入れ替わる。 CheckBox check1 = (CheckBox) findViewById(R.id.checkBox1); check1.setOnCheckedChangeListener(new OnCheckCompoundButtonListener()); check1.setOnClickListener(clickListener); check1.setOnLongClickListener(clickListener); check1.setOnTouchListener(touchListener); クリック時の動き まとめると、ACTION_DOWN > ACTION_UP > onCheckedChanged > onClick --- OnTouchListener.onTouch() view: CheckBox, event: MotionEvent{46c1fc70 action=0 ...} OnTouchListener.onTouch() view: CheckBox, event: MotionEvent{46c1fc70 action=1 ...} OnCheckedChangeListener.onCheckedChanged(): view: CheckBox, false OnClickListener.onClick() view: CheckBox --- 長押し時の動き まとめると、ACTION_DOWN > ACTION_MOVE > onLongClick > ACTION_UP > onCheckedChanged > onClick --- OnTouchListener.onTouch() view: CheckBox, event: MotionEvent{46c1fb60 action=0 ...] OnTouchListener.onTouch() view: CheckBox, event: MotionEvent{46c1fb60 action=2 ...} OnTouchListener.onTouch() view: CheckBox, event: MotionEvent{46c1fb60 action=2 ...} OnTouchListener.onTouch() view: CheckBox, event: MotionEvent{46c1fb60 action=2 ...} OnLongClickListener.onLongClick() view: CheckBox OnTouchListener.onTouch() view: CheckBox, event: MotionEvent{46c1fb60 action=1 ...} OnCheckedChangeListener.onCheckedChanged(): view: CheckBox, false OnClickListener.onClick() view: CheckBox --- △ CheckBox クラス java.lang.Object + android.view.View + android.widget.TextView + android.widget.Button + android.widget.CompoundButton + android.widget.CheckBox チェックする・外すことができるウィジェット。 ・メソッドなどは、スーパークラスである CompoundButton クラスのメソッドを利用して いる。CheckBox として使うのは、以下のものが主。 --- boolean isChecked() void setChecked(boolean checked) void setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener) void toggle() --- △ CompoundButton クラス java.lang.Object + android.view.View + android.widget.TextView + android.widget.Button + android.widget.CompoundButton CheckBox や RadioButton、ToggleButton クラスなどの、ボタンをクリックするとそのボ タンの状態も変化する種類のクラスのスーパークラス。 サブクラスとして、次のクラスがある。 CheckBox, RadioButton, Switch, ToggleButton ・主なメソッド --- boolean isChecked() void setButtonDrawable(int resid) void setButtonDrawable(Drawable d) void setChecked(boolean checked) void setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener) void toggle() --- △ CompoundButton.OnCheckedChangeListener インターフェース android.widget.CompoundButton.OnCheckedChangeListener ボタンの状態が変化したときのリスナー・インターフェース。 ・メソッド --- abstract void onCheckedChanged(CompoundButton buttonView, boolean isChecked) --- isChecked: チェックされていれば true (●) トグルボタン トグルボタンは、クリックするたびに状態が OFF/ON を繰り返す種類のボタンである。 ToggleButton toggle1 = (ToggleButton) findViewById(R.id.toggleButton1); toggle1.setOnCheckedChangeListener(new OnCheckCompoundButtonListener()); toggle1.setOnClickListener(clickListener); toggle1.setOnLongClickListener(clickListener); toggle1.setOnTouchListener(touchListener); クリック時の動き まとめると、ACTION_DOWN > ACTION_UP > onCheckedChanged > onClick --- OnTouchListener.onTouch() view: ToggleButton, event: MotionEvent{46c1fc70 action=0 ...} OnTouchListener.onTouch() view: ToggleButton, event: MotionEvent{46c1fc70 action=1 ...} OnCheckedChangeListener.onCheckedChanged(): view: ToggleButton, false OnClickListener.onClick() view: ToggleButton --- 長押し時の動き まとめると、ACTION_DOWN > ACTION_MOVE > onLongClick > ACTION_UP > onCheckedChanged > onClick --- OnTouchListener.onTouch() view: ToggleButton, event: MotionEvent{46c1fb60 action=0 ...} OnTouchListener.onTouch() view: ToggleButton, event: MotionEvent{46c1fb60 action=2 ...] OnLongClickListener.onLongClick() view: ToggleButton OnTouchListener.onTouch() view: ToggleButton, event: MotionEvent{46c1fb60 action=1 ...] OnCheckedChangeListener.onCheckedChanged(): view: ToggleButton, false OnClickListener.onClick() view: ToggleButton --- △ ToggleButton クラス java.lang.Object + android.view.View + android.widget.TextView + android.widget.Button + android.widget.CompoundButton + android.widget.ToggleButton トグル・ボタンをあらわすクラス。何も指定しなければ、ボタンに表示されるテキストは 「OFF」と「ON」で、図形としてはライトが消えている状態とついている状態。 ・主なメソッド --- CharSequence getTextOff() CharSequence getTextOn() void setChecked(boolean checked) void setTextOff(CharSequence textOff) void setTextOn(CharSequence textOn) void setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener) --- (●) ラジオボタン チェックボックスのように、チェックしている状態とチェックしていない状態の 2 つの 状態を持つビュー。 ただし、グループ化することで、そのグループの中ではひとつだけがチェックしている状 態になる。 グループ化は RadioGroup クラスを使う。 RadioGroup group1 = (RadioGroup) findViewById(R.id.radioGroup1); group1.setOnCheckedChangeListener(new OnCheckRadioGroupListener()); group1.setOnClickListener(clickListener); // 動かないだけ group1.setOnLongClickListener(clickListener); // 動かないだけ group1.setOnTouchListener(touchListener); // 動かないだけ 選択したときには、とくに OnClickListener.onClick()、OnLongClickListener .onLongClick()、OnTouchListener.onTouch() が動いていない。これは、RadioGroup で はなく、RadioButton オブジェクトで設定するもの。 選択時の動き --- OnCheckedChangeListener.onCheckedChanged(): かりんとう OnCheckedChangeListener.onCheckedChanged(): さつまいも --- △ RadioGroup クラス java.lang.Object + android.view.View + android.view.ViewGroup + android.widget.LinearLayout + android.widget.RadioGroup RadioButton オブジェクトを持つクラス。 ・主なメソッド --- void check(int id) void clearCheck() int getCheckedRadioButtonId() チェックされているボタンがなければ -1 が返る void setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener listener) --- △ RadioButton クラス java.lang.Object + android.view.View + android.widget.TextView + android.widget.Button + android.widget.CompoundButton + android.widget.RadioButton 個個のラジオボタンを管理するクラス。 ・主なメソッド --- void toggle() --- △ RadioGroup.OnCheckedChangeListener インターフェース android.widget.RadioGroup.OnCheckedChangeListener ラジオボタンのチェック状態が変化したときのリスナー。 ・メソッド --- abstract void onCheckedChanged(RadioGroup group, int checkedId) --- checkedId: チェックされた ラジオボタンのリソース ID (●) スピナー 選択リスト。複数の項目からひとつを選択できるのは、ラジオボタンと同じ。 アプリ起動時に、このリスナーのハンドラーが動く。 --- OnItemSelectedListener.onItemSelected() parent: Spinner, view: null, 0: アイスクリーム --- Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); spinner1.setOnItemSelectedListener(new OnItemSelectedSpinnerListener()); // spinner1.setOnClickListener(clickListener); // RuntimeException) // spinner1.setOnLongClickListener(clickListener); // RuntimeException spinner1.setOnTouchListener(touchListener); 上のサンプルコードにあるように、setOnClickListener()、setOnLongClickListener() を設定すると、実行時に RuntimeException がスローされる。 選択時の動き まとめると、ACTION_DOWN > ACTION_UP > onItemSelected --- OnTouchListener.onTouch() view: Spinner, event: MotionEvent{46c1fc70 action=0 ...} OnTouchListener.onTouch() view: Spinner, event: MotionEvent{46c41208 action=1 ...} OnItemSelectedListener.onItemSelected() parent: Spinner, view: null, 1: かりんとう OnTouchListener.onTouch() view: Spinner, event: MotionEvent{46c41208 action=0 ...} OnTouchListener.onTouch() view: Spinner, event: MotionEvent{46c41208 action=1 ...} OnItemSelectedListener.onItemSelected() parent: Spinner, view: null, 2: さつまいも --- △ Spinner クラス java.lang.Object + android.view.View + android.view.ViewGroup + android.widget.AdapterView<T extends android.widget.Adapter> + android.widget.AbsSpinner + android.widget.Spinner 選択リストを管理するクラス。 ・主なメソッド --- int getBaseline() CharSequence getPrompt() void onClick(DialogInterface dialog, int which) boolean performClick() void setAdapter(SpinnerAdapter adapter) void setEnabled(boolean enabled) void setGravity(int gravity) void setOnItemClickListener(AdapterView.OnItemClickListener l) void setPrompt(CharSequence prompt) void setPromptId(int promptId) --- △ AdapterView クラス java.lang.Object + android.view.View + android.view.ViewGroup + android.widget.AdapterView<T extends android.widget.Adapter> 配列やリストからの値を管理できるタイプのビューのスーパークラス。 直接のサブクラスではないが、つぎのクラスがこのクラスを継承している。 GridView ListView Spinner ・項目選択関係のメソッド --- Object getSelectedItem() long getSelectedItemId() int getSelectedItemPosition() --- なお、このビューには、setOnClickListener() や setOnLongClickListener() で設定す るリスナーは設定できない。実行すると、つぎのメッセージの例外がスロー。 java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead △ AdapterView.OnItemSelectedListener インターフェース 項目を選択したときのリスナー・インターフェース。 アプリケーション起動時に最初に表示されている項目に対して、まず、このリスナーが動 く。 android.widget.AdapterView.OnItemSelectedListener ・メソッド --- abstract void onItemSelected(AdapterView<?> parent, View view, int position, long id) abstract void onNothingSelected(AdapterView<?> parent) --- 以上
最新の画像[もっと見る]
-
あけましておめでとうございます 11年前
-
今年もよろしくお願いいたします 12年前
-
あけましておめでとうございます 13年前
-
あけましておめでとうございます 16年前
※コメント投稿者のブログIDはブログ作成者のみに通知されます