2013-05-08 6 views
16

देशी अंग्रेजी वक्ता, इसलिए मैं आपको अपने बुरे अंग्रेजी कौशल के बारे में क्षमा चाहता हूं।स्पिनर श्रोता में कुछ भी नहीं चुना गया विधि क्यों है?

मैं 5 सप्ताह पहले से एंड्रॉइड का अध्ययन कर रहा हूं। मैंने एक स्पिनर को लागू करने की कोशिश की और मेरे सलाहकार ने पूछा कि क्यों कुछ भी चयन विधि की आवश्यकता नहीं है। मेरे पास कुछ कहना नहीं था।

तो, मुझे उस विधि की आवश्यकता क्यों है ?? क्या आप इसका जवाब दे सकते हैं?

निम्नलिखित कोड मेरे स्पिनर है। यह सही मायने में करता है जो मैंने इरादा किया था।

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(); 
     }   
    }); 
} 

}

+0

'ऑननेटिंग सिलेक्टेड' इस दृश्य से चयन गायब होने पर कॉल करने के लिए एक कॉलबैक विधि है। – DroidBender

+0

जहाँ तक मुझे लगता है कि आपको टोस्ट दिखाने के लिए इसकी आवश्यकता है? तो यदि आप कुछ भी नहीं चुना तो आप उपयोगकर्ता को सूचित करते हैं। बस इसे स्वयं आज़माएं, कोड की इन पंक्तियों पर टिप्पणी करें और देखें कि आपका ऐप कैसे काम करता है। – sandkasten

उत्तर

4

डॉक here से।

ऑन कुछ भी नहीं चुना गया है जब इस दृश्य से चयन गायब हो जाता है तो कॉलबैक विधि लागू की जाती है। उदाहरण के लिए चयन गायब हो सकता है जब स्पर्श सक्रिय होता है या जब एडाप्टर खाली हो जाता है।

मुझे लगता है कि यह आपके प्रश्न का बहुत अधिक जवाब देता है। तो यदि आइटम का चयन करने के अलावा आपका स्पिनर अन्य कारणों से गायब हो जाता है तो onNothingSelected कहा जाएगा। तो के रूप में यह है नाम बताता है यह पता लगाने के लिए की जरूरत है जब कुछ भी नहीं

+1

दस्तावेज़ गलत होने लगते हैं, कॉलबैक को खारिज करने के लिए नहीं कहा जा रहा है, यहां देखें http://stackoverflow.com/a/3474463/819355 – marmor

+1

यह इस तरह से व्यवहार नहीं करता है, हालांकि इसे करना चाहिए। –

6

चयन किया जाता है प्रलेखन के रूप में वर्णन करता है: जब चयन इस दृश्य से गायब हो जाता है

कॉलबैक विधि लागू किया जा करने के लिए। उदाहरण के लिए चयन गायब हो सकता है जब स्पर्श सक्रिय होता है या जब एडाप्टर खाली हो जाता है।

इसका मतलब है कि जब भी वर्तमान में चयनित आइटम उपलब्ध वस्तुओं की सूची से हटा दिया जाता है तो विधि को कॉल किया जाता है। जैसा कि दस्तावेज़ वर्णन करता है, यह विभिन्न परिस्थितियों में हो सकता है, लेकिन आम तौर पर यदि एडाप्टर संशोधित किया गया है, तो वर्तमान में चयनित आइटम अब उपलब्ध नहीं है, तो विधि को कॉल किया जाएगा।

इस विधि का उपयोग किया जा सकता है ताकि आप यह निर्धारित कर सकें कि कौन सा आइटम चुना जाएगा, क्योंकि पिछला आइटम अब उपलब्ध नहीं है। यह स्पिनर को स्वचालित रूप से सूची में अगले आइटम का चयन करने की बजाय है।

+1

आपको कैसे पता चलेगा कि कौन सा आइटम अचयनित हो गया है, यदि केवल पैरामीटर "एडाप्टर व्यू" है? क्या आप निश्चित हैं कि यह फ़ंक्शन कहलाता है? –

+0

स्पिनर आपको यह नहीं बता सकता कि कौन सा आइटम अचयनित हो गया है क्योंकि यह अब इसके एडाप्टर में मौजूद नहीं है। यदि आप जानना चाहते हैं कि कौन सा आइटम या इंडेक्स पहले चुना गया था तो आपको उस जानकारी को स्वयं स्टोर करना होगा। – TheIT

संबंधित मुद्दे