Насколько я знаю, нет способа установить уникальный идентификатор для EditField.Может быть, вы можете использовать его подкласс и реализовать свой собственный уникальный механизм идентификатора.Или, поскольку ваш HorizontalFieldManager содержит только EditField, вы можете получить поле по позиции и привести его к EditField.Например:
Field f = hfm.getField(index);
EditField ef = (EditField)f;
ОБНОВЛЕНИЕ:
public class MyEditField extends EditField {</p>
<pre><code>private int _id;
public MyEditField(int id) {
_id = id;
}
public int getID() {
return _id;
}
}
класс MyHfm extends HorizontalFieldManager {
//This is a cache, which holds all EditFields.
private IntHashtable _editfields = new IntHashtable ();
public EditField getById(int id) {
EditField ef = (EditField)_editfields.get(id);
return ef;
}
public void add(Field f) {
super.add(f);
if (f instanceof MyEditField) {
_editfields.put(((MyEditField)f).getID(), f);
}
}
public void delete(Field f) {
super.delete(f);
if (f instanceof MyEditField) {
_editfields.remove(((MyEditField)f).getID());
}
}
}
И тогда вы можете сделать так: </p>
<pre><code> MyHfm hfm = new MyHfm();
hfm.add(new MyEditField(0));
hfm.add(new MyEditField(1));
//get the field with id
EditField f = hfm.getById(1);
Существуют и другие методы удаления / добавления, не забудьте обработать кэш внутри них.