web-dev-qa-db-ja.com

スピナーリスナーでonNothingSelectedメソッドが必要なのはなぜですか?

英語を母国語とする人なので、皆さんに私の悪い英語スキルをお詫び申し上げます。

私は5週間前からAndroid=を検討しています。スピナーを実装しようとすると、メンターがonNothingSelectedメソッドが必要な理由を尋ねました。何も言うことはありませんでした。

それで、なぜ私はその方法が必要なのですか?返信できますか?

次のコードは私のスピナーです。それは私が意図したことを正しく行います。

public class SpinnerViewPractice extends Activity {
private Spinner spinner;
private String spinner_value = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.spinnerviewpractice);

    spinner = (Spinner)findViewById(R.id.spinner1);

    String[] str = {"","good", "dislike", "like", "hate", "moderate"};
    spinner.setPrompt("Set Text");
    ArrayAdapter<String> list = new ArrayAdapter<String>(this, Android.R.layout.simple_spinner_dropdown_item, str); 
    spinner.setAdapter(list);
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            TextView tv = (TextView)arg1;
            spinner_value = tv.getText().toString();
            if(spinner_value.length() == 0)
            {
                spinner_value = "Nothing";                  
            }
            Toast.makeText(SpinnerViewPractice.this, spinner_value, Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            Toast.makeText(SpinnerViewPractice.this, "NothingSelected", Toast.LENGTH_SHORT).show();
        }           
    });
}

}

23
Won Chul Jo

ドキュメントが説明するように:

選択がこのビューから消えたときに呼び出されるコールバックメソッド。たとえば、タッチがアクティブになったとき、またはアダプターが空になったときに、選択が消えることがあります。

これは、現在選択されているアイテムが使用可能なアイテムのリストから削除されるたびにメソッドが呼び出されることを意味します。ドキュメントで説明されているように、これはさまざまな状況で発生する可能性がありますが、通常、現在選択されているアイテムが使用できなくなるようにアダプターが変更された場合、メソッドが呼び出されます。

このメソッドを使用すると、前のアイテムが利用できなくなった場合にどのアイテムを選択するかを設定できます。これは、スピナーにリスト内の次の項目を自動的に選択させるのではありません。

12
TheIT

ドキュメントから here

onNothingSelectedは、選択がこのビューから消えたときに呼び出されるCallbackメソッドです。たとえば、タッチがアクティブになったとき、またはアダプターが空になったときに、選択が消えることがあります。

私はそれがあなたの質問にほとんど答えると思います。したがって、アイテムを選択する以外の理由でスピナーが消えた場合は、onNothingSelectedが呼び出されます。その名前が示すように、何も選択されていないときにそれを見つける必要がある

6
stinepike