2012-04-16 3 views
1

У меня есть ListField, который является длинным вертикальным списком элементов, которые вы можете выбрать и удалить. При удалении элемента список прокручивается назад. Я могу использовать setSelectedIndex (rowIndex), чтобы вернуться к месту в списке, который я просматривал, но это не сохранит строки, которые я просматривал на экране. Вместо этого строка появляется в нижней части экрана, потому что она перестала прокручиваться после появления правильного индекса на экране.Blackberry - предотвращает прокрутку ListField после удаления элемента

Есть ли способ удалить строку и сохранить мой список/список?

ответ

2

Только что понял, что использовал неправильную функцию ListField.setSize().

ListField.setSize (int size) отправляет фокус обратно в начало списка, но вы можете использовать ListField.setSize (int size, int focusRow), чтобы оставить фокус на «currentIndex», если хотите. Надеюсь, что это помогает кому-то

1
  1. Сохранить текущую позицию в списке (через myListField.getSelectedIndex()), скажем

    INT MYVAR = myListField.getSelectedIndex();

  2. Удалить элемент

  3. использование myVar, и используя текущий размер списка и myVar значение Рассчитайте и установите индекс списка с помощью myListField.setSelectedIndex(int index); Используйте другой поток и Application.invokeLater(Runnable thread); для этого действия, чтобы избежать событий блокировки проблем при обновлении пользовательского интерфейса приложения.

Всё.

+0

Это придает фокусу правильную строку, но строки, отображаемые на экране, все равно будут отличаться. Например, я просматриваю строки 5-10, но после removeRow (8) setSelectedIndex (8) выводит экран на строки 3-8 – Chicowitz

+0

Я не понял то, что вы точно имеете в виду. Если вы хотите установить фокус на определенный объект, найдите этот объект в списке, когда вы удалите строку, и установите фокус на индекс найденного списка. –

Смежные вопросы