2010-06-30 15 views
37

चेक बॉक्स प्राप्त करने या अक्षम होने पर ईवेंट प्राप्त करने और भेजने का सही तरीका क्या होगा। सी # में मैं बस आसानी से डबल क्लिक कर सकता हूं और मेरे लिए सभी कोड किए जाएंगे। लेकिन एंड्रॉइड में यह थोड़ा और अस्पष्ट प्रतीत होता है। मैंने टच इवेंट हैंडलर का उपयोग करने के बारे में सोचा लेकिन फिर यदि उपयोगकर्ता के पास कीबोर्ड है तो यह स्पर्श का पता नहीं लगाएगा क्योंकि यह स्पर्श नहीं है। मुझे लगता है कि एंड्रॉइड में चेक बॉक्स राज्य परिवर्तन के लिए मूल घटना होनी चाहिए।एंड्रॉइड चेकबॉक्स चेक इवेंट पर कोई ईवेंट कैसे प्राप्त करें?

उत्तर

118
CheckBox repeatChkBx = (CheckBox) findViewById(R.id.repeat_checkbox); 
repeatChkBx.setOnCheckedChangeListener(new OnCheckedChangeListener() 
{ 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    { 
     if (isChecked) 
     { 
      // perform logic 
     } 

    } 
}); 
+15

हालांकि यह सही जवाब है, मैं उत्सुक क्या सबसे अच्छा तरीका हो सकता है जब चेकबॉक्स एक ListView आइटम के अंदर है और onCheckedChange हर बार यह अतीत उपयोगकर्ता स्क्रॉल कहा जाता हो जाता हूँ। जब उपयोगकर्ता द्वारा और सूचीदृश्य अद्यतन द्वारा शुरू किया जाता है तो इसे अलग करने का कोई तरीका? – rmooney

+1

^@Rmooney की यह टिप्पणी गोल्ड है! मुझे रीसाइक्लर व्यू एडाप्टर के साथ कोई समस्या थी और हर बार जब मैंने स्क्रॉल किया तो यह एक बार से अधिक पागल हो गया! धन्यवाद! –

+0

एडाप्टर में, जब आप उस विशेष धारक के लिए चेकchange सेट करते हैं। सबसे पहले श्रोता को हटाएं, मान बदलें, फिर श्रोता को पढ़ें। चेकबॉक्स स्वयं श्रोता को कॉल करते हैं ताकि आपको इसे ट्रिगर किए बिना मान सेट करने के लिए इसे हटा दिया जाए। – Tatarize

4

के बाद से स्थित चेकबॉक्स (अंत में) देखें फैली हुई है, आप पता लगाने के लिए जब चेक बॉक्स वास्तव में उपयोगकर्ता द्वारा उपयोग किया जाता है (जैसा कि ListView अपडेट के खिलाफ) एक मानक OnClickListener उपयोग कर सकते हैं:

CheckBox repeatChkBx = (CheckBox) findViewById(R.id.repeat_checkbox); 
repeatChkBx.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     if (((CheckBox)v).isChecked()) { 
      // perform logic 
     } 
    } 
}); 
0

इस प्रयास करें

CheckBox checkbox=(CheckBox)findViewById(R.id.checkbox); 
checkbox.setOnClickListener(new View.OnClickListener() 
{ 
     @Override 
     public void onClick(View v) 
     { 
      if (checkbox.isChecked()) 
      { 
      //Perform action when you touch on checkbox and it change to selected state 
      } 
      else 
      { 
    //Perform action when you touch on checkbox and it change to unselected state 
      } 
     } 
    }); 
संबंधित मुद्दे