2012-12-28 2 views
0

Я новичок в android. Я хочу сохранить 5 рекордов для своей игры. Для этого я использую SharedPreferences . Как сохранить несколько баллов в SharedPreferences? Я могу предположить, что каждый раз, когда завершается уровень, должна быть проверка. Но как я могу заполнить 5 рекордов?Android SharedPreferences, сохраняющий лучшие результаты за игру

+1

Различные ключи. например, highscore1, highscore2 и т. д. –

+0

Я уже пробовал это. но предположим, что у вас есть счет 2600, и уже есть оценки 3200, 2400, 2300. то 3200 останутся в 1-й позиции, 2600 будут помещены на 2-ое место, 2400 в третьем и 2300 в 4-м. поэтому индексы 2400 и 2300 уменьшаются. мой вопрос в том, как я могу поддерживать этот поток ??? – tcse9

+0

Реализовать алгоритм сортировки, а затем переписать все sharedpreferences. Поскольку у вас всего 5 баллов, это не замедлит ваше приложение. –

ответ

1

сказать, что вы хотите хранить только баллы (без имен). Поместите все свои оценки в массив. Затем используйте

Arrays.sort (myIntArray); 

Это сортирует его по возрастанию, поэтому вам нужно его отменить.

Это означает, что в вашем SharedPreferences операции записи, начните с 4 затем работать в обратном направлении ..

sharedPreferences.putInt("HighScore1", myIntArray [4]); 
sharedPreferences.putInt("HighScore2", myIntArray [3]); 

т.д.

Для достижения наилучших результатов, вы бы «по умолчанию» значение рода, например, -1 баллов, которых не существует. Таким образом, когда вы показываете на экране, вы можете проверить на -1, затем вывести «None» или вообще ничего не выводить.

+0

ОК, похоже, это близко к моему ответу, снова спасибо @ A - C – tcse9

0

Просто дайте каждый уникальный ключ:

SharedPreferences.Editor spEdit = getDefaultSharedPreferences().edit(); 
spEdit.putInt("FirstHighScore", firstHighScore); 
spEdit.putInt("SecondHighScore", secondHighScore); 
// Etc. 
spEdit.commit(); 
+0

«Я уже пробовал это, но предположим, что у вас есть счет 2600, и уже есть оценки 3200, 2400, 2300, тогда 3200 останется на 1-й позиции, 2600 будет быть поставлен на 2-ое место, 2400 в третьем и 2300 в 4-м, поэтому индексы 2400 и 2300 уменьшаются. Мой вопрос: как я могу поддерживать этот поток? " --- @Ralgha ... любая идея bro ??? – tcse9

+0

@ tcse9: простой и простой способ сначала добавить все prefrences в ArrayList из SharedPreferences, а затем добавить новый балл также в arraylist. второй после добавления всех элементов в сортировке ArrayList в соответствии с вашими требованиями ASC или DESC, а третий после короткого замыкания сохраните его в SharedPreferences –

+0

вправо, вы пойдете на эту методологию, спасибо man - @ ρяσѕρєя K – tcse9

Смежные вопросы