ListView操作在恢复时重置

时间:2018-05-14 19:34:28

标签: android listview kotlin

我有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中: 像(pseudecode):

override fun onCreate() {
    Handler().postDelayed({
        if (swapped) {
            swapViews(viewA, viewB)
        }
    , 100)
}

(顺便说一下,我需要加上延迟,因为否则什么都不会发生。有人知道为什么吗?)

虽然这有效,但当用户关闭整个应用程序甚至将其从最近的视图中移除时,当用户切换到最近的应用程序屏幕并切换回应用程序时,它无效。

它适用于两个LinearViews,但不适用于ListView内的视图。

我猜,android会重新加载listdata onResume,因此它会覆盖我的交换。但我不确定是不是很难。

现在我的问题: 有谁知道如何解决这个问题?

对我而言,最简单的方法就是:

listview.onReload(dostuff)

所以当android加载ListView的数据时,我可以运行我的函数。

(为了测试我也在其中一个ListView中进行了文本覆盖,当切换回应用程序时,它已经消失了,所以android确实重新加载了ListView

0 个答案:

没有答案