2011-04-04 15 views
14

तो पुन: सक्षम मैं अनुकूलक में निम्न कोड:एंड्रॉयड - अक्षम सूची दृश्य आइटम क्लिक करें और यह

@Override 
    public boolean isEnabled(int position) 
    { 
     GeneralItem item = super.getItem(position); 
     boolean retVal = true; 


      if (item != null) 
      { 
       if (currSection != some_condition) 
       retVal = !(item.shouldBeDisabled()); 
      } 
     return retVal; 
    } 


    public boolean areAllItemsEnabled() 
    { 
     return false; 
    } 

यहाँ सवाल: तो मैं प्रारंभिक बंधन के दौरान मेरे आइटम अक्षम करता है, तो, अब मैं घटना बढ़ा स्क्रीन पर और उन सभी को सक्षम करने की आवश्यकता है चाहे कोई फर्क नहीं पड़ता। क्या कार्रवाई के बाद मैं इसे फिर से दोबारा दोबारा दूंगा?

उदाहरण के लिए

:

onCreate{ 

// create and bind to adapter 
// this will disable items at certain positions 

} 

onSomeClick{ 

I need the same listview with same items available for click no matter what the conditions of positions are, so I need them all enabled. What actions should I call on the adapter? 

} 

समस्या मैं एक बहुत लंबा सूचीदृश्य भी हो सकती है। यह 6000 वस्तुओं का समर्थन करने का अनुमान लगाता है। तो यह निश्चित रूप से एक विकल्प नहीं है।

धन्यवाद,

उत्तर

25

क्या आपके एडाप्टर पर एक उदाहरण चर होने के बारे में:

public boolean isEnabled(int position) { 
    if (areAllItemsEnabled()) { 
     return true; 
    } 
    ... rest of your current isEnabled method ... 
} 
: isEnabled की शुरुआत में

public boolean areAllItemsEnabled() { 
    return ignoreDisabled; 
} 

और उसके बाद:

boolean ignoreDisabled = false; 

फिर areAllItemsEnabled में

फिर आप ignoreDisabled उचित रूप से सेट करके दो मोड के बीच स्विच कर सकते हैं और अपने ListView पर invalidate पर कॉल कर सकते हैं।

ध्यान दें कि isEnabled के अतिरिक्त शायद अनचाहे है; यह बस थोड़ा और पूरा लगता है।

+0

हाँ यह ठीक है कि मैंने इसे कैसे हल किया :) महान जवाब धन्यवाद! – dropsOfJupiter

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