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