Я предполагаю, что проблема в том, что когда вы нажимаете кнопку «вверх» или «вниз», элемент перемещается, но поскольку вы удалили его из списка, а затем добавили снова, это не больше выбран. Модель выбора списка обрабатывает событие «удалить» и очищает его выбор, поскольку выбранный элемент был удален.
Я знаю два способа исправить это, оба неэлегантные:
- Сделайте так, чтобы действие "Переместить" также обновило модель выбора, чтобы сохранить выбранный элемент.
- Переместите элемент, сохранив его в списке и переместив все остальные элементы. Итак, если список [1, 2, 3, 4] и вы хотите переместить 3 в начало, сначала удалите 1 и 2, чтобы получить [3, 4], затем добавьте их обратно в индекс 1, чтобы получить [3 , 1, 2, 4]. (При этом используется тот факт, что модель выбора обновляет выбранный индекс при добавлении и удалении событий)
Я обычно использовал (2), потому что, хотя это немного больше работы, он позволяет логике перемещения работать только с моделью списка, а не с моделью выбора.