Я изменяю свой ответ для этой ссылки на StackOverflow. Вы можете сохранить несколько избранных в одном предпочтении, добавив множество избранных в одну строку, каждый из которых отделяется запятой.Затем вы можете использовать метод convertStringToArray
, чтобы преобразовать его в String Array.Вот полный исходный код.Используйте методы MyUtility для сохранения нескольких избранных элементов.
btnAddFavourite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
MyUtility.addFavoriteItem(MyActivity.this, "Sports");
MyUtility.addFavoriteItem(MyActivity.this, "Entertainment");
}
получить массив строк всех сохраненных избранных
String[] favorites = MyUtility.getFavoriteList(this);// returns {"Sports","Entertainment"};
Сохраните эти методы в отдельном классе утилит
public abstract class MyUtility {
public static boolean addFavoriteItem(Activity activity,String favoriteItem){
//Get previous favorite items
String favoriteList = getStringFromPreferences(activity,null,"favorites");
// Append new Favorite item
if(favoriteList!=null){
favoriteList = favoriteList+","+favoriteItem;
}else{
favoriteList = favoriteItem;
}
// Save in Shared Preferences
return putStringInPreferences(activity,favoriteList,"favorites");
}
public static String[] getFavoriteList(Activity activity){
String favoriteList = getStringFromPreferences(activity,null,"favorites");
return convertStringToArray(favoriteList);
}
private static boolean putStringInPreferences(Activity activity,String nick,String key){
SharedPreferences sharedPreferences = activity.getPreferences(Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, nick);
editor.commit();
return true;
}
private static String getStringFromPreferences(Activity activity,String defaultValue,String key){
SharedPreferences sharedPreferences = activity.getPreferences(Activity.MODE_PRIVATE);
String temp = sharedPreferences.getString(key, defaultValue);
return temp;
}
private static String[] convertStringToArray(String str){
String[] arr = str.split(",");
return arr;
}
}
Если вам нужно добавить дополнительные избранное .Затем получите любимую строку из SharedPreference
, добавьте запятую + любимый элемент и сохраните ее обратно в SharedPreference
.* Вы можете использовать любую другую строку для разделителя вместо запятой.