首页 > 解决方案 > ListView 操作在恢复时重置

问题描述

我有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)
}

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

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

它适用于两个 LinearView,但不适用于ListView.

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

现在我的问题是:有人知道我该如何解决吗?

对我来说最简单的是,拥有如下功能:

listview.onReload(dostuff)

所以我可以运行我的函数,当 android 加载ListView.

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

标签: androidlistviewkotlin

解决方案


推荐阅读