2010-06-30 7 views
37

Bir onay kutusunun etkinleştirilmesi veya devre dışı bırakılması durumunda bir olayın alınmasının ve gönderilmesinin doğru yolu nedir? C# 'da kolayca çift tıklayabilir ve tüm kod benim için yapılır. ama android'de biraz daha belirsiz görünüyor. Dokunma olay işleyicilerini kullanmayı düşündüm ancak kullanıcının klavyesi varsa, dokunmadığı için değişikliği algılamayacaktır. Ben android onay kutusu durum değişikliği için bir yerel olayı olması gerektiğini.Android'de bir olay nasıl alınır onay kutusunu işaretleyin?

cevap

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

, ben onay kutusu, bir ListView öğesi içindedir ve onCheckedChange her zaman geçmiş kaydırdığı çağrılan zaman en iyi yaklaşım ne olacağını merak ediyorum. Kullanıcı tarafından başlatıldığında ve liste görünümü güncellemesinde farklılaşmanın herhangi bir yolu var mı? – rmooney

+1

^@Rmooney'ın bu yorumu ALTIN! RecyclerView adaptörüyle ilgili bir sorun yaşadım ve her kaydırdığımda, bir kereden fazla çıldırmaya başladım! Teşekkürler! –

+0

Bağdaştırıcıda, belirli bir tutucu için onay kutusunu ayarladığınızda. Önce dinleyiciyi kaldırın, değeri değiştirin ve dinleyiciyi okuyun. Onay kutuları kendileri dinleyiciyi çağırmaya zorlar, bu nedenle değeri tetiklemeden ayarlamak için onu kaldırmanız gerekir. – Tatarize

4

CheckBox (sonunda) Görünüm uzanır olduğundan, (ListView güncellemeleri aksine) CheckBox gerçekte kullanıcı tarafından dokunulduğunda algılamak için bir standart OnClickListener kullanabilirsiniz:

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

bu deneyin Bu doğru cevap iken

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 
      } 
     } 
    });