private ArrayList<PhotoInfo> imagelist;
imagelist = new ArrayList<>();
imagelist = response.body().getPhotos();
我必须以共享的首选项保存图像
并从Arraylist中检索
答案 0 :(得分:2)
嘿,我为保存和获取任何自定义模型的ArrayList到SharedPreferences
中提供了这种简单方法。
为此需要Gson依赖项:
implementation 'com.google.code.gson:gson:2.8.5'
将所有自定义列表保存到SharedPreferences
:
public void saveMyPhotos(ArrayList<PhotoInfo> imagelist ) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
try {
Gson gson = new Gson();
String json = gson.toJson(imagelist);
editor.putString("MyPhotos", json);
editor.commit(); // This line is IMPORTANT !!!
} catch (Exception e) {
e.printStackTrace();
}
}
从SharedPreferences
获取所有保存的照片:
private ArrayList<PhotoInfo> getAllSavedMyPhotos() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Gson gson = new Gson();
String json = prefs.getString("MyPhotos", null);
Type type = new TypeToken<ArrayList<PhotoInfo>>() {}.getType();
return gson.fromJson(json, type);
}
答案 1 :(得分:0)
您可以使用gson库将字符串列表转换为字符串,然后在下面存储和获取SharedPreferences代码
在gradle依赖项中添加
api 'com.google.code.gson:gson:2.8.5'
将您的列表转换为字符串并存储在SharedPreferences中
public static boolean writePhotoInfoJSON(List<PhotoInfo> sb, Context context)
{
try {
SharedPreferences mSettings =
context.getSharedPreferences("yourSharedPreNme", Context.MODE_PRIVATE);
String writeValue = new GsonBuilder()
.registerTypeAdapter(Uri.class, new UriSerializer())
.create()
.toJson(sb, new TypeToken<ArrayList<PhotoInfo>>()
{}.getType());
SharedPreferences.Editor mEditor = mSettings.edit();
mEditor.putString("shringName", writeValue);
mEditor.apply();
return true;
} catch(Exception e)
{
return false;
}
}
获取您的自定义数组列表
public static ArrayList<PhotoInfo> readPhotoInfoJSON(Context context)
{
if(context==null){
return new ArrayList<>();
}
try{
SharedPreferences mSettings =
context.getSharedPreferences("yourSharedPreNme", Context.MODE_PRIVATE);
String loadValue = mSettings.getString("shringName", "");
Type listType = new TypeToken<ArrayList<PhotoInfo>>(){}.getType();
return new GsonBuilder()
.registerTypeAdapter(Uri.class, new UriDeserializer())
.create()
.fromJson(loadValue, listType);
}catch (Exception e){
e.printStackTrace();
}
return new ArrayList<>();
}
public static class UriDeserializer implements JsonDeserializer<Uri> {
@Override
public Uri deserialize(final JsonElement src, final Type srcType,
final JsonDeserializationContext context) throws
JsonParseException {
return Uri.parse(src.toString().replace("\"", ""));
}
}
public static class UriSerializer implements JsonSerializer<Uri> {
public JsonElement serialize(Uri src, Type typeOfSrc,
JsonSerializationContext context) {
return new JsonPrimitive(src.toString());
}
}
答案 2 :(得分:0)
首先,您需要在模型类中实现class test {
a;
b: string;
}
let sd = new test();
console.log(sd.b)
接口
接下来,在模块级别Serializable
文件中添加implementation 'com.google.code.gson:gson:2.8.2'
然后,您可以通过以下方式将Arraylist保存到共享首选项/从共享首选项中检索:
build.gradle