2012-06-25 17 views
7

चयन किया जाता है मैं onItemSelected interation कि काम करता है के साथ एक स्पिनर है, लेकिन कैसे एपीआई विनिर्देश का कहना है:एंड्रॉयड: क्लिक पर स्पिनर आइटम शामिल नहीं है काम करता है, तो यह पहले से ही

This callback is invoked only when the newly selected position is different from the 
previously selected position or if there was no selected item. 

मैं इस सीमा को दूर करने की जरूरत है और मैं चाहता हूं कि यदि उपयोगकर्ता एक ही तत्व का चयन करता है तो कॉलबैक भी लागू किया जाता है। उसको कैसे करे?
किसी ने भी वही किया?

इस बारे में कोई विचार सराहनीय होगा ..

+0

setOnItemClickListener –

+0

के साथ प्रयास करें मैं भी इसकी तलाश कर रहा हूं .... – Sri

+0

संभावित डुप्लिकेट [वर्तमान चयनित आइटम को फिर से चुना जाने पर एंड्रॉइड स्पिनर में कोई ईवेंट कैसे प्राप्त किया जा सकता है?] (Http://stackoverflow.com/ प्रश्न/5335306/कैसे-कर सकते हैं-ए-मिल-एक-EV एंटी-इन-एंड्रॉइड-स्पिनर-कब-वर्तमान-चयनित-आइटम-एस-सेल) – stefan222

उत्तर

1

i want that the callback is invoked also if the user select the same element. How to do that?

स्थापना OnItemClickListener एक स्पिनर के लिए एक अपवाद फेंक देंगे और ItemSelectedListener का उपयोग कर आप सूचित नहीं किया जाएगा यदि चयनित/एक ही तत्व पर उपयोगकर्ता क्लिक ।

मुझे लगता है कि इस सीमा को दूर करने का एकमात्र तरीका स्पिनर आइटम के लिए कस्टम एडाप्टर का उपयोग करना है और एडाप्टर में प्रत्येक दृश्य के लिए setOnClickListener लागू करना है।

+0

अरुण का जवाब देने के लिए धन्यवाद .. इसे आजमाएं .. – Hulk

1

मुझे यह समस्या थी और थोड़ा सा देखा। इस कार्यक्षमता को काम करने के कई तरीके हो सकते हैं लेकिन स्पिनर का विस्तार करने के लिए मेरे लिए काम किया। आप कुछ ऐसा कर सकते हैं जो मुझे here मिला।

तो डिफ़ॉल्ट एंड्रॉइड स्पिनर का उपयोग करने के बजाय इसे बढ़ाएं और इसमें कुछ कोड जोड़ें जो आपकी कॉलबैक विधि को ट्रिगर करेगा।

मैं जोड़ने के लिए के रूप में दस्तावेज में कहा गया है कि एक स्पिनर पर setOnItemClickListener का उपयोग करके अपवाद फेंक जाना है:

A spinner does not support item click events. Calling this method will raise an exception. 
0

इस मामले आप एक कस्टम स्पिनर करना है में: इस

public class MySpinner extends Spinner{ 

OnItemSelectedListener listener; 

public MySpinner(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
} 

@Override 
public void setSelection(int position) 
{ 
    super.setSelection(position); 

    if (position == getSelectedItemPosition()) 
    { 
     listener.onItemSelected(null, null, position, 0); 
    }  
} 

public void setOnItemSelectedListener(OnItemSelectedListener listener) 
{ 
    this.listener = listener; 
} 
} 
प्रयास करें
संबंधित मुद्दे