您可以在单个首选项中保存多个收藏夹,方法是在单个字符串中添加多个收藏夹,每个收藏夹项目以逗号分隔。然后您可以使用convertStringToArray 方法将其转换为字符串数组。这是完整的源代码。
使用 MyUtility 方法保存多个收藏项。
MyUtility.addFavoriteItem(this, "Sports");
MyUtility.addFavoriteItem(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。
* 您可以使用任何其他字符串作为分隔符,而不是逗号。