I’m facing a problem determining whether the checkboxes are checked. This is because they are dynamically generated. I attempted to create the OnCheckedChangeListener() for each of the dynamic checkboxes, but it was identified that only the last dynamic checkbox’s OnCheckedChangeListener() gets executed.
Here’s my code snippet (Hope it will be helpful):
public class yc_SubmitAttendance_ClassMode extends Activity {
Context myContext = this;
myDbAdapter myDB = null;
Cursor myCur = null;
Spinner mySpin = null;
TableLayout tl = null;
CheckBox myCB = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yc_studattend_classmode_layout);
mySpin = (Spinner)findViewById(R.id.spinClassModeSelectModGrp);
myDB = new myDbAdapter(myContext);
tl = (TableLayout)findViewById(R.id.classModeTableLayout);
//retrieve dynamic data
myCur = myDB.retrieveAttnForSelectedMod(mySpin.getItemAtPosition(arg2).toString());
myCur.moveToFirst();
for(byte rowNo=0;rowNo<myCur.getCount();rowNo++)
{
TableRow tr = new TableRow(myContext);
/*Some codes intentionally left missing */
myCB = new CheckBox(myContext);
myCB.setId(rowNo);
//Setting a onCheckedListener on each of the checkbox generated
myCB.setOnCheckedChangeListener(new OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton arg0,
boolean arg1) {
// TODO Auto-generated method stub
myCur.moveToPosition(myCB.getId());
if(myCB.isChecked())
{
Toast.makeText(myContext,"Attendance deducted to " + ((myCur.getFloat(2)) - 2) + "%", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(myContext,"Attendance reverting to " + (myCur.getFloat(2)) + "%", Toast.LENGTH_SHORT).show();
}
}
});
//Insert the checkbox onto this row
tr.addView(myCB);
//Append this row to the TableLayout
tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
myCur.moveToNext();
} //end of for-loop
} // end of onCreate
}//end of class
But, what I want is to be able to determine each dynamic checkbox whether they are checked or not checked.
Yeong Chai
Substitute this code in:
The problem was you were using myCB.isChecked() instead the second parameter “arg1” to determine whether the CheckBox was checked or not. myCB will always point at the last CheckBox you create because you assign it each time you loop through.