android 如何在屏幕旋转时存储ArrayList数据?

oaxa6hgo  于 2023-05-05  发布在  Android
关注(0)|答案(1)|浏览(111)

我尝试使用serializable和parcelable存储数组列表数据,但在这两种情况下,我都使用getParcelable和getSerializable获取数据。由于@Deprecated或Type Mismatch,我收到错误。

val time1ArrayTennis: ArrayList<TimeArr>
       time1ArrayTennis = savedInstanceState?.getSerializable("time1") as ArrayList<*>

    //TimeArr is data class
      data class TimeArr(
          val time1 : Int
           ) : Serializable

有人可以请帮助如何在一个简单的方式,我可以保存和恢复数据时,屏幕旋转?谢谢

xnifntxz

xnifntxz1#

在你的代码片段中,不清楚什么是TimeArr。你可能会得到一个错误,因为它没有实现Parcelable接口。你至少有两个选择:
1.为TimeArr类实现Parcelable接口。然后使用outState.putParcelableArrayList("time1", time1ArrayTennis)将数组存储在Actiivty.onSaveInstanceState()方法中。然后在onRestoreInstanceState(savedInstanceState: Bundle)中重新创建Activity后从Bundle中获取
1.将此数据保存在ViewModel中:
您的ViewModel类:

class MyViewModel : ViewModel() {

        val time1ArrayTennis: ArrayList<TimeArr>

        .....

    }

您的活动类别:

class MyActivity : AppCompatActivity() {

        private val viewModel: MyViewModel by viewModels()

        .........

        private fun someFunWhereYouWorkWithData() {
            val data = viewModel.time1ArrayTennis
            // TODO: work with data
        }

    }

相关问题