Почему SharedPreference всегда получают несортированный массив в Android? - PullRequest
0 голосов
/ 20 мая 2019

Я занимаюсь разработкой в ​​Android и пытаюсь записать ArrayList в SharedPreferencesString

Я использую следующую функцию для установки и получения данных:

fun setSharedPreferencesMutableList(context: Context, setName: String, value: ArrayList<String>) {
    val setting = context.getSharedPreferences(TABLE, Context.MODE_PRIVATE)
    setting.edit().putStringSet(setName, value.toSet()).apply()
}

fun getSharedPreferencesMutableList(context: Context, getName: String): ArrayList<String> {
    val setting = context.getSharedPreferences(TABLE, Context.MODE_PRIVATE)
    var array =  setting.getStringSet(getName, setOf<String>()).toTypedArray()
    return ArrayList(Arrays.asList(*array))
}

Сначала я сохраняю ArrayList и хочу снова сохранить после сортировки Arraylist. Но я всегда получаю предварительную сортировку данных.

Код, подобный следующему:

var test = ArrayList<String>()
test.add("111")
test.add("222")
test.add("333")
test.add("444")
test.add("555")
//The data should be: [111, 222, 333, 444, 555]

//Save Data
SharedPreferenceHelper.setSharedPreferencesMutableList(context,SharedPreferenceHelper.TEST,test)

//Change "111" with "444"
var i = test.indexOf("444")
var data = test[0]
test[0] = "444"
test[i] = data
//The data should be: [444, 222, 333, 111, 555]

//Save Data again
SharedPreferenceHelper.setSharedPreferencesMutableList(context,SharedPreferenceHelper.TEST,test)

Log.d(TAG, "getList: ${SharedPreferenceHelper.getSharedPreferencesMutableList(context, SharedPreferenceHelper.TEST)}")

Но я всегда получаю несортированные данные ([111, 222, 333, 444, 555]), когда получаю SharedPreference.

Я что-то упустил? Заранее спасибо.

1 Ответ

1 голос
/ 20 мая 2019

Я что-то упустил?

Да, тот факт, что Set - это неупорядоченная коллекция предметов. Либо вы выполняете сортировку в вашем getSharedPreferencesMutableList перед возвратом, либо сохраняете ее по-другому, например, в виде строки массива JSON

...