2012-10-02 20 views
5

मैं अपने ग्रिडव्यू में कुछ आइटम क्लिक करने योग्य क्लिक करने के लिए सेट करने की कोशिश कर रहा हूं। तो मेरे पास एक कस्टम एडाप्टर और एक onitemclicklistener के साथ एक ग्रिडव्यू है। अपने कस्टम अनुकूलक में, मैं अपने getView विधि में निम्नलिखित करने की कोशिश: (के बाद से मैं IsEnabled बुला के बारे में पढ़ा ..)ग्रिडव्यू में कुछ आइटम सेट करें क्लिक करने योग्य नहीं

if(int value < 5) { //item can not be clickable 
isEnabled(position); 
} else { 
//other things happen, but isEnabled is not called here in any case 
} 
//...... 
@Override 
    public boolean isEnabled(int position) { 

      return false; 

    } 

अजीब बात अब हर आइटम, क्लिक करने योग्य नहीं है, हालांकि आइटम कहां पर हैं, है मान है> 5 .. मुझे नहीं पता कि इसका क्या कारण है ...

+0

क्या यह 'सक्षम (स्थिति)' के बजाय 'सक्षम है (मान)' होना चाहिए? – DeeV

उत्तर

9

तो आप वास्तव में यहां क्या कर रहे हैं, isEnabled(int) में एक निर्मित विधि को ओवरराइड कर रहा है और इसे हमेशा झूठी वापसी के लिए कह रहा है। यह आपके एडाप्टर को हमेशा आपके ग्रिड को बताने का कारण बन रहा है कि इसकी कोशिकाओं को सक्षम नहीं किया जाना चाहिए।

क्या आप वास्तव में के लिए देख रहे यहाँ मुख्य बिंदु है आप isEnabled बुला एक नहीं हैं और अधिक की तरह

public boolean isEnabled(int position) 
{ 
    if(position < 5) 
     return false; 
    else 
     return true; 
} 

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

+0

ठीक है, मैं देखता हूं। यह स्पष्ट लगता है! धन्यवाद! –

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