У меня есть ListView
с двумя дочерними элементами:
-----------------
| left | right |
-----------------
Теперь у меня есть метод, который меняет местами эти два ребенка:
-----------------
| right | left |
-----------------
Таким образом, правый контент находится слева, а левый - справа.
Функция выглядит так:
fun swapViews(A: View, B: View) {
val viewAx = A.x
val viewAy = A.y
val viewBx = B.x
val viewBy = B.y
A.x = viewBx
A.y = viewBy
B.x = viewAx
B.y = viewAy
}
Сама функция работает нормально, но мне трудно их поменять, когда пользователь закрывает приложение или просто переходит на обзорный экран приложения.
В настоящее время я проверяю логическое значение, которое хранится в sharedprefs:
Что-то вроде (псевдокод):
override fun onCreate() {
Handler().postDelayed({
if (swapped) {
swapViews(viewA, viewB)
}
, 100)
}
(Кстати, мне нужно было добавить задержку, потому что иначе ничего бы не случилось вообще. Кто-нибудь знает почему?)
Хотя это работает, когда пользователь закрывает все приложение и даже удаляет его из недавнего просмотра, оно не работает, когда пользователь переключается на экран недавних приложений и переключается обратно на приложение.
Работает с двумя LinearView, но не с видами внутри ListView
.
Я предполагаю, что Android перезагружает список данных onResume
, и поэтому он отменяет мой обмен. Но я не уверен в этом.
Теперь мой вопрос:
Кто-нибудь знает, как я могу решить это?
Для меня проще всего было бы иметь такую функцию:
listview.onReload(dostuff)
, чтобы я мог запустить свою функцию, когда Android загружает данные для ListView
.
(Для тестирования я также сделал переопределение текста в одном из ListView
s и при переключении обратно в приложение оно пропало, поэтому android действительно перезагружает ListView
)