Blackberry возвращается на предыдущую позицию в ListField

В моем приложении я использую список. Этот список можно обновить с помощью кнопки обновления списка, которая извлекает больше данных с сервера. Когда пользователь нажимает кнопку обновления, мое приложение помещает последний выбранный элемент в поле участника -

lastPosition = listField.getSelectedIndex();

После обновления списка мое приложение использует -

listField.setSelectedIndex(lastPosition);

для установки последней позиции. Но ничего не происходит.

Как я могу «переместить» курсор списка, чтобы он указывал на lastPosition? Спасибо, Эяль.

                listField.setKeyword("");
            listField.v = userVector;               
            listField.updateList(); 
            listField.getResultList();
            listField.setSelectedIndex(lastPosition);
            listField.setFocus();
            Manager manager = listField.getManager();
            int rowHeight = listField.getRowHeight();
            manager.setVerticalScroll(lastPosition * rowHeight);
            listField.invalidate();

person eyal    schedule 16.10.2011    source источник


Ответы (1)


Трудно догадаться, что не так, не видя кода, однако первое, что приходит на ум, возможно, вы не устанавливаете фокус на список сразу после восстановления позиции? Если нет, то попробуйте:

listField.setSelectedIndex(lastPosition);
listField.setFocus();
person Vit Khudenko    schedule 16.10.2011
comment
В настоящее время. курсор возвращается к первому элементу в ListField. - person eyal; 16.10.2011
comment
как насчет того, чтобы сначала установить фокус на поле списка, а затем установить индекс? - person denolk; 16.10.2011
comment
Кажется, что setSelectedIndex не имеет никакого эффекта. - person eyal; 16.10.2011
comment
@eyal: Изменяет ли базовая коллекция свой размер при обновлении? Если да, вызываете ли вы ListField.setSize(newSize) на нем (API говорит: Invoke this method to reset the number of items in this field, and select the first item in the list.)? Вы уверены, что lastPosition является ненулевым значением, когда вы вызываете listField.setSelectedIndex(lastPosition)? - person Vit Khudenko; 16.10.2011
comment
Спасибо. после добавления ListField.setSize(newSize) он начинает работать. - person eyal; 16.10.2011