2014-04-03 121 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; 
     } 

} 
} 
相關問題