Определение индекса элемента в форме (J2ME)
Вопрос
Учитывая Item
это было добавлено к Form
, каков наилучший способ узнать, под каким индексом находится этот элемент в Форме?
Form.append(Item)
выдаст мне индекс, в который он был добавлен изначально, но если я позже вставлю элементы до этого, индекс будет не синхронизирован.
Решение
Это было лучшее, что я смог придумать:
private int getItemIndex(Item item, Form form) {
for(int i = 0, size = form.size(); i < size; i++) {
if(form.get(i).equals(item)) {
return i;
}
}
return -1;
}
Я на самом деле не тестировал это, но это должно сработать, мне просто не нравится перечислять каждый элемент, но тогда их никогда не должно быть так много, так что, я думаю, все в порядке.
Другие советы
Ну, есть только два способа сделать это, поскольку API не имеет indexOf(Item)
способ:
- Вы обновляете индекс, который получаете при добавлении
Item
.Поэтому, когда вы вставляете другойItem
перед другими элементами вам нужно будет обновить индексы этих элементов.Вы могли бы сохранить для этого какой-нибудь теневой массив, но это кажется немного излишним. - Вы перебираете все элементы формы, используя
size
иget
методыForm
.
Не связан с StackOverflow