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