Группировать пары ключ-значение в SharedPreferences - PullRequest
0 голосов
/ 04 февраля 2019

Я хочу сохранить данные в SharedPreferences , однако я хочу сгруппировать один и тот же список значений для разных экземпляров.Например:

class Player(name: String, age: Int, gender: String) {

}

PlayerDetails.kt

override fun onClick(v: View?) {

    val name: String = player_name.text.toString()

    val age = if (player_age.text.toString().isNotEmpty()) player_age.text.toString().toInt() else 0
    val genderId: Int = gender.checkedRadioButtonId
    val gender: String = if (genderId > 0) resources.getResourceEntryName(genderId) else ""

    if (name.isNotEmpty() && genderId > 0 && age > 0 ){

        val player = Player(name, age, gender)

        val sharedPref = this@PlayerDetails.getSharedPreferences("user_details", Context.MODE_PRIVATE)
        ... 
        // get a specific Player's age

    } else {
        blankFields()
    }


}

Я хочу, чтобы файл SharedPreferences содержал все экземпляры Player в одном файле:

... / shared_prefs / user_details.xml

<map>
    <string name="name">peter</string>
    <string name="age">22</string>
    <string name="gender">male</string>
</map>
<map>
    <string name="name">steven</string>
    <string name="age">24</string>
    <string name="gender">male</string>
</map>

Как мне получить доступ к отдельным Player экземплярам (например, Peter's age)?

Если я выполняю sharedPref.getString("age","defaultName"), он не может нацелиться на age конкретного игрока, так как есть несколько экземпляров.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

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

Но если вы действительно хотите сохранить его в SharedPrefences, я могу посоветовать вам сериализовать Map в JSON и затем сохраните его в SharedPreferences.Самый простой способ решить проблему.

0 голосов
/ 05 февраля 2019

Это на самом деле не то, для чего нужны общие префы.Если вы хотите сохранить сложные данные локально, загляните в «Комната» https://developer.android.com/topic/libraries/architecture/room, чтобы добавить базу данных mini SQL lite.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...