Манипулирование ListView сбрасывается при возобновлении - PullRequest
0 голосов
/ 14 мая 2018

У меня есть 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...