2011-12-08 12 views
5

एक सामान्य एंड्रॉइड Spinner क्लिक करते समय विकल्पों की एक सूची पॉप अप करेगा। मैं इस ऑनक्लिक को ओवरराइड करना चाहता हूं। जब उपयोगकर्ता कुछ त्रुटि स्थिति के दौरान स्पिनर पर क्लिक करता है, तो मैं विकल्पों की सूची पॉप अप करने के बजाय एक त्रुटि संदेश प्रदर्शित करना चाहता हूं। वर्तमान में, मैं बस OnClickListener सेट कर सकता हूं, लेकिन इसकी ऑनक्लिक विधि मुझे विकल्पों की सूची को दिखने से रोकने नहीं देती है।एंड्रॉइड स्पिनर पर क्लिक करने के लिए ओवरराइड कैसे करें?

उत्तर

0

मैं एक माईस्पिनर एडाप्टर क्लास बनाने की कोशिश करता हूं, जो स्पिनर एडाप्टर लागू करता है। अपने MySpinnerAdapter में, getDropDownView विधि पर एक नज़र डालें। मेरा मानना ​​है कि पॉप-अप दृश्य बनाया गया है। आप अपनी त्रुटि स्थिति देख सकते हैं, और वहां एक अलग दृश्य वापस करने का निर्णय ले सकते हैं (हालांकि यह किसी अन्य फ़ंक्शन में हो सकता है -> दस्तावेज़ीकरण की जांच करें) ...

वैसे भी, यह उत्तर एक कॉपी-पेस्ट नहीं है। बस() इस तरह की कुछ नए विचारों

public class yourActivity extends Activity 
{ 

    private class MySpinnerAdapter implements SpinnerAdapter 
    { 
     // There are quite a lot of methods you need to implement... 

     @Override 
     public View getDropDownView(int position, View convertView, ViewGroup parent) 
     { 
       // Check your error states here 
       if(<we have some kind of error>) 
        return specialErrorView // you get the idea 

       // return the default view with options 
       return normalView; 
     } 
    } 
} 
4

स्पिनर तक फैली हुई है थूक और performClick ओवरराइड करने के लिए कोशिश कर रहा है:

@Override 
public boolean performClick() { 
    if(errorOccured) { 
     // show validation message 
     return true; // the event is handled by ourselves 
    } 
    else { 
     return super.performClick(); // show spinner dialog 
    } 
} 

अधिक जानकारी के लिए सूत्रों का कहना है देखें। उम्मीद है की यह मदद करेगा।

+1

बेहतर और सरल – Entreco

5

कोशिश एक onTouchListener की स्थापना और onTouch विधि में अपने पॉपअप प्रदर्शित और true लौट घटना उपभोग करते हैं और दृश्य (इस मामले में स्पिनर) के लिए प्रचार से रोकने के लिए।

spinner.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
    // display your error popup here 
    return true; 
    } 
}); 

इसे "ड्रॉप डाउन सूची" को दिखने से रोकना चाहिए।

संपादित करें: उल्लेख करना भूल गया कि आप onTouch विधि में भी अपनी त्रुटि स्थिति जांच सकते हैं, इसलिए आप स्पिनर को पूरी तरह से अक्षम नहीं करते हैं।

+1

संपादन के तहत की गई टिप्पणियां हैं जिनके साथ मैं समाप्त हुआ। अलग-अलग राज्यों में कुछ क्रॉस खंड नियंत्रण सीमा प्राप्त करने के लिए न्यूनतम घुसपैठ। – James

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