Здравствуйте, сегодня мы будем кодировать сохранение и выборку данных с помощью списков. ArrayList — это класс в java, который реализует интерфейс списка и предоставляет функцию, подобную динамическому массиву.

Ниже приведен процесс реализации списка массивов в вашем проекте. Здесь мы используем два текстовых поля редактирования для ввода данных и две кнопки, одну кнопку сохранения для сохранения данных и выборку для получения данных.

    <EditText
        android:id="@+id/edtUsername"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="50dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/edtEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginHorizontal="50dp"
        app:layout_constraintTop_toBottomOf="@id/edtUsername"
        app:layout_constraintStart_toStartOf="parent" />
    <Button
        android:id="@+id/btnSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Save"
        android:layout_marginTop="30dp"
        android:layout_marginHorizontal="50dp"
        app:layout_constraintTop_toBottomOf="@id/tvEmail"
        app:layout_constraintStart_toStartOf="parent"/>
 <Button
        android:id="@+id/btnLoad"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Fetch"
        android:layout_marginTop="30dp"
        android:layout_marginHorizontal="50dp"
        app:layout_constraintTop_toBottomOf="@id/tvEmail"
        app:layout_constraintEnd_toEndOf="parent"/>

Теперь, прежде чем работать над кодом основного действия, добавьте эту зависимость в свой файл gradle.

  implementation 'com.google.code.gson:gson:2.8.5'

Теперь откройте основное действие, и мы будем делать следующие вещи в этом действии. Но сначала используйте привязку в своем проекте.

class MainActivity : AppCompatActivity() {

     private lateinit var binding:ActivityMainBinding
    private lateinit var sharedPreferencesHelper: SharedPreferencesHelper

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)
         //for array list
        sharedPreferencesHelper = SharedPreferencesHelper(this)
     
        //savebtn
        binding.btnSave.setOnClickListener{
            val email = binding.edtEmail.text.toString()
            val userName = binding.edtUsername.text.toString()

            //array List
            val dataArray= ArrayList<String>()
            dataArray.add(email)
            dataArray.add(userName)
            sharedPreferencesHelper.saveArrayList(dataArray, "data")

        }

            binding.btnLoad.setOnClickListener{

                val data = sharedPreferencesHelper.getArrayList("data")

 // here the load button will show the data , on the logcat.
                Log.d("MainActivity", "DATA: $data")

            }

        }
 

После этого сделал следующую функцию

    class SharedPreferencesHelper(private val context: Context) {
        private val sharedPreferences =
            context.getSharedPreferences("saveData", Context.MODE_PRIVATE)
        private val gson = Gson()

        fun saveArrayList(list: ArrayList<String>, key: String) {
            val json = gson.toJson(list)
            sharedPreferences.edit().putString(key, json).apply()
        }

        fun getArrayList(key: String): ArrayList<String> {
            val json = sharedPreferences.getString(key, null)
            val type = object : TypeToken<ArrayList<String>>() {}.type
            return gson.fromJson(json, type) ?: ArrayList()
        }

        fun saveString(key: String, value: String) {
            sharedPreferences.edit().putString(key, value).apply()
        }

        fun getString(key: String): String? {
            return sharedPreferences.getString(key, null)
        }

    }