2013-02-28 10 views
8

मेरे पास वर्तमान में ListView है, जो ListView के OnItemLongClickListener में एक प्रासंगिक ActionBar सक्रिय करता है।isItem चेक किया गया है हमेशा एक इटैमक्लिक लिस्टनर के अंदर क्या होता है इसके विपरीत देता है?

मैं इसे बनाने की कोशिश कर रहा हूं ताकि आइटम उन पर क्लिक करके चुना जा सके, लेकिन केवल जब प्रासंगिक ActionBar ऊपर हो।

समस्या यह है कि, जब मैं isItemChecked() की जांच करता हूं, ताकि आइटम के चयन स्थिति को टॉगल करने के लिए, यह हमेशा इसके विपरीत होने के विपरीत लौटाता है।

list.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     if (mActionMode != null){ 
      list.setItemChecked(position, !list.isItemChecked(position)); 
     } 
     else{ 
      list.setItemChecked(position, false); 
     } 

    } 

}); 

संपादित करें: यह सुंदर bizzare है .. इस कोड टॉगल चयन राज्य:

list.setItemChecked(position, list.isItemChecked(position)); 

क्या जा रहा है

यहाँ मैं कैसे क्रियान्वित किया है OnItemClickListener है पर!?

संपादित करें 2: आह, ऐसा लगता है कि एंड्रॉइड स्वचालित रूप से प्रत्येक आइटम को स्वचालित रूप से जांच रहा है और अनचेक कर रहा है ... क्या इस व्यवहार को बदलने और इसे स्वयं संभालने का कोई तरीका है? लाइन

list.setItemChecked(position, !list.isItemChecked(position)); 

आप स्पष्ट रूप से नकारने से क्या isItemChecked रिटर्न के विपरीत करने के लिए यह तय कर रहे हैं में निर्दिष्ट स्थान

की जाँच की राज्य सेट:

+0

हमें समझने की जरूरत है कि mctionMode विधि में क्या है, क्योंकि यह ट्रिगर कर रहा है कि चेकबॉक्स चेक किया जाना चाहिए या नहीं। क्या आप 'mActionMode()' विधि के लिए कोड शामिल करने में सक्षम हैं? धन्यवाद। –

उत्तर

1

यहाँ setItemChecked विधि के लिए दस्तावेज़ है बयान में बहस

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