android - 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
)
解决方案
推荐阅读
- javascript - 您如何在 jest 上执行重复的 jQuery ajax 调用以进行单元测试?
- javascript - 当任何 cypress 方法不起作用时如何处理 Cypress 中的拖放
- node.js - Nodejs,在所有功能或事件中为我的应用程序创建日志的更好方法是什么?
- flutter - 如何在文本字段上方显示提示文本
- javascript - 是否可以从 FIREBASE 存储中同步下载图像?并将其传递给 PNG.sync.read?
- python - 6.moves 中的关键错误,返回 sys.modules[fullname]
- antlr4 - ANTLR - 解析时如何在双引号字符串中接受双引号
- postgresql - 恢复 Postgres 数据库失败:用户密码验证失败
- javascript - 无法在 Windows 10 中执行脚本 docker-compose YML 文件
- reactjs - 导航后保持点击状态