11-26-2009 03:43 AM
Hi ,
I have 2 checkbox
1. income
2. expense
i want to select only one at a time . can any tell me how this can be implemented in blackberry 4.5 , does any checkbox group exsit for blackberry .
willbe thankfull if any one can help me to solve this issue
Thanks
SujithRavindran
11-26-2009 03:49 AM
use FieldChangeListener. This example shows how to use it but not on checkboxes:
11-26-2009 04:12 AM
A grouping class exists only for the ChoiceField, not for the Checkbox. It should not be difficult to implement it yourself though.
If you don't want to listen to the immediate change of the checkbox you can implement the control as a FieldChangeListener, to set itself to each field that is added. In the fieldChanged method just iterate through all added fields and reverse the checked status.
11-26-2009 04:50 AM
If it is of only two checkbox field.. give a try like this.. if it is more fields better to go for Simon's approach.
final CheckboxField cbf = new CheckboxField("Cricket",false);
final CheckboxField cbf1 = new CheckboxField("Baseball",false);
add(cbf);
add(cbf1);
cbf.setChangeListener(new FieldChangeListener ()
{
public void fieldChanged(Field field, int context)
{
if(cbf.getChecked() == true && cbf1.getChecked() == true)
{
cbf1.setChecked(false);
}
}
});
cbf1.setChangeListener(new FieldChangeListener ()
{
public void fieldChanged(Field field, int context)
{
if(cbf.getChecked() == true && cbf1.getChecked() == true)
{
cbf.setChecked(false);
}
}
});
11-26-2009 07:28 AM
class CheckboxFieldChangeListener extends FieldChangeListener
{
private CheckboxField[] m_arrFields;
public CheckboxFieldChangeListener (CheckboxField[] arrFields)
{
m_arrFields = arrFields;
}
public void fieldChanged(Field field, int context)
{
if(true == field.getChecked())
{
for(int i = 0; i < m_arrFields.length; i++)
{
CheckboxField oField = m_arrFields[i];
if((oField != field) && (oField.getChecked()))
{
oField.setChecked(false);
}
}
}
}
}
// Create checkboxes
final CheckboxField oIncomeCheckboxField = new CheckboxField("Income", false);
final CheckboxField oExpenseCheckboxField = new CheckboxField("Expense", false);
//Add to the screen
add(oIncomeCheckboxField);
add(oExpenseCheckboxField);
// Create listener
CheckboxFieldChangeListener oCheckboxFieldChangeListener = new CheckboxFieldChangeListener();
// Set listener
oIncomeCheckboxField.setChangeListener(oCheckboxFi
oExpenseCheckboxField.setChangeListener(oCheckboxF
You can use vector instead of array.
eDip
11-26-2009 07:39 AM
the CheckboxFieldChangeListener can set itself as a listener to each added field. using a vector allows to add fields dynamically.