2014-04-03 62 views
0

我有16个复选框,我正在动态地尝试获取一次检查,我已经从我的布局中的checkBox1-checkbox16编号他们。如何动态获取所有选中的复选框?

我使用的代码如下

package com.example.test; 

import android.R.string; 
import android.app.Activity; 
import android.graphics.Typeface; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

public class Compare1 extends Activity{ 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.commac1); 
     // setdesign(); 
     checkbox(); 
    } 

    private void checkbox() { 
     // TODO Auto-generated method stub 
     for(int a=1;a<17;a++){ 
      String cb="checkBox"+a; 
      int id=getResources().getIdentifier(cb, "id", getPackageName()); 
      CheckBox cb1=(CheckBox) findViewById(id); 
      if(cb1.isChecked()){ 
       Toast.makeText(this, "you selected" +cb, Toast.LENGTH_SHORT).show(); 

      }}}} 

这似乎并不为working.Can有人帮助我。由于

+0

您需要.setOnCheckedChangeListener挂接到复选框 –

回答

1

添加到您的类(根据@ FMontano的建议)

public class Compare1 extends Activity implements CompoundButton.OnCheckedChangeListener { 

    ... 

再试试这个方法1:

CheckBox cb1 = findViewById(id); 
check.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      //Toast.makeText ... 
     } 
    }); 

或者这种方法2:

@Override 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    switch(buttonView.getId()){ 
       case R.id.checkbox1: 
       //your toast 
       break; 
       case R.id.checkbox2: 
       //your toast 
       break; 
       case R.id.checkbox3: 
       //your toast 
       break; 

      } 

} 

并呼吁它像这样使用

CheckBox cb1 = findViewById(R.id.checkbox1); 
cb1.setOnCheckedChangeListener(this); 
+1

不要忘记,让您的活动实施OnCheckedChangeListener : '公共类比较1延伸活动实现CompoundButton.OnCheckedChangeListener' – FMontano

+0

@FMontano是的!编辑包括它。 –

0

使用IsabelHM建议,你最终会与你最终的东西看起来像这样:

package com.example.test; 

import android.R.string; 
import android.app.Activity; 
import android.graphics.Typeface; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

public class Compare1 extends Activity implements CompoundButton.OnCheckedChangeListener{ 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.commac1); 
    // setdesign(); 
    checkbox(); 
} 

private void checkbox() { 
    // TODO Auto-generated method stub 
    for(int a=1;a<17;a++){ 
     String cb="checkBox"+a; 
     int id=getResources().getIdentifier(cb, "id", getPackageName()); 
     CheckBox cb1=(CheckBox) findViewById(id); 
     cb1.setOnCheckedChangeListener(this); 
    } 
} 

/// Will be called by all the checkboxes 
@Override 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    switch(buttonView.getId()){ 
      case R.id.checkbox1: 
      //your toast 
      break; 
      case R.id.checkbox2: 
      //your toast 
      break; 
      case R.id.checkbox3: 
      //your toast 
      break; 
      ... 
      case R.id.checkbox16: 
      //your toast 
      break; 
     } 

} 
} 
相关问题