Spinner, AlertDialog

एक Spinner एक dropdown है जो एक list से एक choice दिखाता है जो आप इसे एक adapter से feed करते हैं (pick को getSelectedItem से पढ़िए), और एक AlertDialog एक modal pop-up है AlertDialog.Builder से बनाया गया जो title, message, और OK/Cancel buttons के साथ एक question पूछता है।

9 min read · 9 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

एक लंबी list, फिर एक final check

FestConnect को दो और चीज़ें चाहिए: एक T-shirt size picker (S, M, L, XL, XXL) जो पाँच radio buttons से screen न खाए, और एक final 'Confirm registration?' box जिसे submit से पहले student को answer करना है।

ये दो widgets हैं जो अक्सर साथ दिखते हैं: Spinner (एक compact dropdown) और AlertDialog (एक modal yes/no pop-up)। एक list से एक choice gather करता है; दूसरा रुकता है और एक question पूछता है। इन्हें एक pair की तरह सीखिए।

Theory

एक drop-down menu और एक security gate

एक Spinner एक rail पर एक restaurant menu है: यह fold रहता है आपकी current pick दिखाते हुए, और tap होने पर पूरी list दिखाने के लिए खुल जाता है। एक AlertDialog एक security gate है: यह corridor block करता है और तब तक जाने नहीं देता जब तक आप 'proceed?' का yes या no answer न करें। एक एक तरतीबी chooser है; दूसरा एक deliberate stop-and-decide है।

Theory

Spinner, फिर AlertDialog

Spinner (dropdown):

  • इसे एक ArrayAdapter से भरिए (एक string array से)।
  • setOnItemSelectedListener से react कीजिए।
  • getSelectedItem() (या getSelectedItemPosition()) से पढ़िए।

AlertDialog (modal question):

  • new AlertDialog.Builder(this) से build कीजिए।
  • setTitle, setMessage, setPositiveButton("OK", ...), setNegativeButton("Cancel", ...)।
  • create() फिर show() (या बस .show()) से finish कीजिए।

Dialog block करता है जब तक user answer न करे, एक Toast के उलट।

Practical

Size Spinner, फिर confirm

// Spinner: feed it a list with an adapter
Spinner size = findViewById(R.id.size);
String[] sizes = {"S", "M", "L", "XL", "XXL"};
size.setAdapter(new ArrayAdapter<>(this,
        android.R.layout.simple_spinner_item, sizes));

register.setOnClickListener(v -> {
    String picked = size.getSelectedItem().toString();

    // AlertDialog: modal confirm before submitting
    new AlertDialog.Builder(this)
        .setTitle("Confirm")
        .setMessage("Register with size " + picked + "?")
        .setPositiveButton("Yes", (dialog, which) ->
            Toast.makeText(this, "Registered!", Toast.LENGTH_SHORT).show())
        .setNegativeButton("Cancel", null)
        .show();
});

Think first

Toast या AlertDialog?

FestConnect registration को एक Toast ('Registered!') या एक AlertDialog ('Register with size L? Yes/No') से confirm कर सकता है। एक final confirmation के लिए कौन सा फिट होता है जिसे user को actively agree करना है, और दूसरा यहाँ ग़लत क्यों है?

Show the answer

AlertDialog, क्योंकि यह modal है: यह block करता है और user के actively Yes या No चुनने का इंतज़ार करता है, जो exactly वही है जो एक final confirmation को चाहिए। एक Toast इस step के लिए ग़लत है क्योंकि यह बस flash होकर fade हो जाता है बिना buttons के, user agree या decline नहीं कर सकता, और इसे पूरी तरह miss कर सकता है। Passive 'done' feedback के लिए (उनके confirm करने के बाद) एक Toast इस्तेमाल कीजिए, और जब आपको असली decision चाहिए एक AlertDialog।

Quiz

एक Spinner tap होने पर इसके dropdown में कुछ नहीं दिखाता। सबसे ज़्यादा संभावना missing step क्या है?

  1. Items की list supply करने के लिए कोई adapter set नहीं किया गया
  2. इसे एक RadioGroup wrapper चाहिए
  3. AlertDialog create नहीं किया गया
  4. getSelectedItem() कभी call नहीं किया गया
Show the answer

Items की list supply करने के लिए कोई adapter set नहीं किया गया

एक Spinner खाली रहता है जब तक आप इसे एक adapter (जैसे sizes का एक ArrayAdapter) से data न दें; कोई adapter नहीं, कोई items नहीं (A)। Spinners RadioGroups में wrapped नहीं होते (B)। एक AlertDialog एक अलग widget है और Spinner भरने से unrelated है (C)। getSelectedItem() current pick पढ़ता है, यह list नहीं भरता (D)। हमेशा एक Spinner को इसके options देने के लिए एक adapter set कीजिए।

Watch out

Spinner और dialog traps

1. बिना adapter वाला Spinner: यह कुछ नहीं दिखाता। इसे एक ArrayAdapter से populate कीजिए।

2. एक AlertDialog build करना पर इसे show न करना: Toast की तरह, आपको show() call करना ज़रूरी है (create() के बाद, या सीधे)। कोई show() नहीं, कोई dialog नहीं।

3. एक Toast इस्तेमाल करना जहाँ एक decision required है: एक Toast Yes/No capture नहीं कर सकता। एक असली choice के लिए, positive/negative buttons वाला एक AlertDialog सही है।

Theory

अगला: आख़िरी widget, smart text

एक widget बचा है: AutoCompleteTextView, एक text field जो आपके type करते ही matches suggest करता है (FestConnect की college field के लिए बढ़िया), एक TextWatcher के साथ pair किया गया जो हर keystroke पर react करता है। यह Spinner से adapter idea को live text events के साथ combine करता है, एक फिट finale जो unit को साथ बाँधता है।

Summary

Key takeaways

  • एक Spinner एक dropdown है; इसे एक ArrayAdapter से populate कीजिए और getSelectedItem() से choice पढ़िए।
  • एक लंबी list से एक choice के लिए एक Spinner इस्तेमाल कीजिए (कुछ options के लिए RadioButtons फिट होते हैं)।
  • एक AlertDialog AlertDialog.Builder से बना एक modal question है: setTitle, setMessage, setPositiveButton/setNegativeButton, फिर show()।
  • एक AlertDialog answer होने तक block करता है (एक असली decision); एक Toast बस flash होता है (passive feedback)।
  • एक Spinner को एक adapter चाहिए, और एक AlertDialog को show() चाहिए, वरना कुछ नहीं दिखता।
  • Memory hook: एक drop-down menu (Spinner) और एक security gate (AlertDialog)।

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Other Android Widgets (UI)

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Spinner, AlertDialog · Mobile Application Development - 1 (option B) · Gri-Learn