Здравствуйте, сегодня мы будем кодировать сохранение и выборку данных с помощью списков. 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) } }