2012-09-14 7 views
5

मेरे पास निम्नलिखित कोड है जो समझने में काफी आसान है। मैं इस सूचीदृश्य के कुछ विशिष्ट बच्चे को क्लिक करने योग्य नहीं चाहता हूं।किसी सूचीदृश्य के कुछ आइटम कैसे क्लिक करने योग्य नहीं हैं?

ArrayAdapter<String> adapter = 
     new ArrayAdapter<String>(this,R.layout.list_item,R.id.module_name_item, testdata); 

    m_listview.setAdapter(adapter); 


    Log.i("check","1"); 
    if(sectionAttempts.get(0).equals("0")) 
    { 

     m_listview.getChildAt(2).setEnabled(false); 
     m_listview.getChildAt(3).setEnabled(false); 
    } 
    else 
    { 

     if(sectionAttempts.get(2).equals("0")) 
     { 

      m_listview.getChildAt(3).setEnabled(false); 
     } 


    } 

मैं

m_listview.getChildAt(2).setEnabled(false); 

java.lang.NullpointerException के रूप में त्रुटि हो रही है। मैंने त्रुटि खोजने की कोशिश की और Log.i ("चेक", m_listview.getChildCount()) का उपयोग किया; और यह 0 दिखाता है। इसलिए मैं अनुमान लगा रहा हूं कि सूचीदृश्य अभी तक नहीं बनाया गया है !! वो कैसे संभव है।

समस्या क्या प्रतीत होती है? अग्रिम में किसी भी मदद के लिए Thanx।

+0

पोस्ट आप क्या त्रुटि प्राप्त कर रहे हैं – slezadav

+0

@slezadav: plzz अद्यतन प्रश्न देखें। मुझे लगता है कि मैं उन बयानों को कॉल करने से पहले मेरी सूचीदृश्य नहीं बनाया गया है ?? – Abhinav

उत्तर

15

areAllItemsSelectable() विधि ओवरराइड करें। यह कहने के लिए झूठी वापसी करें कि सभी आइटम क्लिक करने योग्य नहीं हैं।

@Override 
public boolean areAllItemsSelectable() { 
    return false; 
} 

और फिर विधि नीचे ओवरराइड वापस जाने के लिए जो आइटम क्लिक करने योग्य

@Override 
public boolean isEnabled(int position) { 
    if(position == your_item_pos) { 
     return false; 
    } 
    return true; 
} 
+0

मेरे कोड में समस्या क्या थी? – Abhinav

+0

बहुत अच्छा समाधान, Google सब कुछ के बारे में सोचता है –

+0

इस विधि ने विभाजक लाइनों को मेरी सूची वस्तुओं के बीच दिखाने से रोका। इसके बजाय, मैंने सूची दृश्य 'एक्सएमएल के एक्सएमएल में निम्नलिखित संपत्ति सेट की है: listSelector = "@ android: color/transparent" 'और यह मेरे लिए काम करता है। – Richard

0

लगता है के रूप में अगर आप अपने ListView initilize नहीं था नहीं है। यदि आप नियमित गतिविधि का उपयोग कर रहे हैं तो onCreatem_listview=getListView() का उपयोग करें यदि आप ListActivity या m_listview=findViewById(R.id...) का उपयोग कर रहे हैं।

7

मेरे अनुभव साझा करना, निम्नलिखित चाल किया था (देखें सूची आइटम को देखने के लिए संदर्भित करता है):

view.setEnabled(false); 
view.setOnClickListener(null); 
  • विधि अधिभावी के रूप में विधि लागू नहीं किया गया काम नहीं किया द्वारा सक्षम करने से।
  • गलत पर ध्यान केंद्रित करने के लिए सेटिंग भी काम नहीं किया।
संबंधित मुद्दे