我想用 SaveInstanceState

问题描述 投票:0回答:0

我想使用 SavedInstanceState 来保存 Recycler View 的数据和其他相关数据,比如标题等(这是一个购物车 Activity,基本上所有数据都是从其他 Activity 收集的) 我的代码:-

package com.example.myapplication

import android.annotation.SuppressLint
import com.example.myapplication.passing_data
import java.lang.Class
import android.content.Context
import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView

class TrackOrderAcitivty : AppCompatActivity() {
    private lateinit var adapter3: ImageAdapter
    private  lateinit var ImageRecyclerView : RecyclerView
    private  lateinit var DataArraylist : ArrayList<images>
    private lateinit var savedArrayList:ArrayList<passing_data>
    @SuppressLint("MissingInflatedId")
    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putParcelableArrayList("Total Saved List",savedArrayList)
        outState.putParcelableArrayList("Image Saved List",DataArraylist)
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_track_order_acitivty)
        DataArraylist= arrayListOf<images>()
        val food:passing_data = intent.getParcelableExtra("foodie")!!
        if(savedInstanceState!=null){

            savedArrayList.addAll(savedInstanceState.getParcelableArrayList("Total Saved List",passing_data))
        }
        if(food!=null)
        {
            savedArrayList.add(passing_data(food.Image,food.title,food.category,food.price,food.star_rating,food.count))
            DataArraylist.add(images(food.Image))
            val order:TextView=findViewById(R.id.textView16)
            order.text="${food.count} Items Ordered"
            val layoutManager= LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false)
            ImageRecyclerView=findViewById(R.id.recyclerView_Image)
            ImageRecyclerView.layoutManager= layoutManager
            ImageRecyclerView.setHasFixedSize(true)
            adapter3= ImageAdapter(DataArraylist)
            ImageRecyclerView.adapter= adapter3
        }

    }
}```

 

In Line no 31 I wanted to get the content of my saved Parcelable Array list back into it as if I reopen Activity all of it just gets removed.
On Addition:
Also I had found that there is something known as ChangeNumberItemListener in Java which basically saves the content of a Recycler View so I wanted to know how to implement that in Kotlin.
If I can implement this I can basically avoid saving ArrayList all together.
android android-recyclerview android-savedstate
© www.soinside.com 2019 - 2024. All rights reserved.