user interface - Blackberry: obtenga todos los campos de control secundarios
user-interface (2)
+1 de enero, pero ¿y los gerentes internos? Alguna recursión hará la cosa.
class Scr extends MainScreen implements FieldChangeListener {
HorizontalFieldManager mMainPanel;
VerticalFieldManager mVerticalPanel;
ButtonField mPrintButton;
public Scr() {
add(new LabelField("Title", FIELD_HCENTER));
mMainPanel = new HorizontalFieldManager();
add(mMainPanel);
mVerticalPanel = new VerticalFieldManager();
mMainPanel.add(mVerticalPanel);
for (int i = 0; i < 5; i++) {
HorizontalFieldManager hfm = new HorizontalFieldManager();
hfm.add(new LabelField("Label " + i, FIELD_LEFT));
hfm.add(new BasicEditField(FIELD_RIGHT));
mVerticalPanel.add(hfm);
}
mPrintButton = new ButtonField("Print Console All Fields",
ButtonField.CONSUME_CLICK | FIELD_HCENTER);
mPrintButton.setChangeListener(this);
add(mPrintButton);
}
private Field[] getAllFields(Manager manager) {
int cnt = manager.getFieldCount();
Field[] result = new Field[cnt];
for (int i = 0; i < cnt; i++) {
Field field = manager.getField(i);
result[i] = field;
if (field instanceof Manager) {
Field[] childFields = getAllFields((Manager) field);
result = appendArray(result, childFields);
}
}
return result;
}
private Field[] appendArray(Field[] target, Field[] source) {
for (int i = 0; i < source.length; i++) {
Arrays.add(target, source[i]);
}
return target;
}
public void fieldChanged(Field field, int context) {
if (mPrintButton == field) {
Field[] fields = getAllFields(getMainManager());
for (int i = 0; i < fields.length; i++) {
System.out.print("/nN " + i + "; Class: "
+ fields[i].getClass().getName());
}
}
}
}
Estoy teniendo un administrador de campo horizontal. Estoy agregando algunos componentes en tiempo de ejecución. Quiero saber cuáles son los componentes que he colocado en el administrador de campos horizontales. ¿Puede alguien darme una idea de cómo encontrar cuáles son los componentes que están presentes en el administrador de campo horizontal? . saludos, s.kumaran.
Algo como esto debería funcionar:
public Field[] getFieldsOfManager(Manager manager) {
Field[] fields = new Field[manager.getFieldCount()];
for( int i = 0; i < manager.getFieldCount(); i++ )
{
fields[i] = manager.getField( i );
}
return fields;
}