我有一个ArrayList自定义对象.每个自定义对象都包含各种字符串和数字.即使用户离开活动然后想要稍后返回,我也需要数组停留,但是在应用程序完全关闭后我不需要数组可用.我通过这种方式保存了很多其他对象,SharedPreferences但我无法弄清楚如何以这种方式保存整个数组.这可能吗?也许SharedPreferences这不是解决这个问题的方法吗?有更简单的方法吗?
我已经开始研究我的第一个Android应用程序,并具有处理具有多个图层的图像的应用程序的基础.我能够将项目文件的平面版本导出为PNG,但我希望能够保存分层图像以供以后编辑(包括应用于某些图层的任何选项,例如基于文本的图层).
无论如何,我已经确保需要写入文件的类是'Serializable'但是由于android.graphics.Bitmap不可序列化而导致了一些路障.下面的代码实际上将Bitmap作为PNG输出到ByteArray中,并应作为'readObject'的一部分将其读回.但是,当代码运行时 - 我可以验证读入的'imageByteArrayLength'变量与输出的变量相同 - 但'Bitmap image'始终为null.
任何帮助将不胜感激.谢谢阅读.
private String title;
private int width;
private int height;
private Bitmap sourceImage;
private Canvas sourceCanvas;
private Bitmap currentImage;
private Canvas currentCanvas;
private Paint currentPaint;
private void writeObject(ObjectOutputStream out) throws IOException{
out.writeObject(title);
out.writeInt(width);
out.writeInt(height);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
currentImage.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] imageByteArray = stream.toByteArray();
int length = imageByteArray.length;
out.writeInt(length);
out.write(imageByteArray);
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException{
this.title = (String)in.readObject();
this.width = in.readInt();
this.height = in.readInt();
int imageByteArrayLength = in.readInt(); …Run Code Online (Sandbox Code Playgroud) 我可以将自己的对象数组保存到SharedPreferences中,如下面的帖子中所示吗?
自定义对象的Android ArrayList - 保存到SharedPreferences - 可序列化?
但是他没有保存数组,那么是否有可能将自定义对象数组保存到SharedPreferences中,就像在链接的帖子中一样?
我有一个CustomClass,Bean/Model/Pojo它用于从Json保存自定义Obejcts.我希望保存ArrayList我CustomClass的内容SharedPreference并在特殊情况下将其恢复.我发现它存储在一个方式SharedPreference 在这里!正确的答案是SpyZip
我能够存储和检索一个,List但我想存储和检索一个ArrayList.
这是一个片段,显示我如何存储和检索值SharedPreference:
// This method will save custom class ArrayList<Bean>
public void saveUserFavouriteStations(
ArrayList<RadioStationBean> radioStation) {
FavouriteStationHolder = this.getSharedPreferences("stations", 0);
Editor editor = FavouriteStationHolder.edit();
Gson gson = new Gson();
String jsonCars = gson.toJson(radioStation);
editor.putString("stations", jsonCars);
System.out.println("Custom ArrayList Saved in App Class");
editor.commit();
}
public ArrayList<RadioStationBean> getUserFavouriteStations() {
FavouriteStationHolder = this.getSharedPreferences("stations", 0);
if (FavouriteStationHolder != null) {
String jsonString = …Run Code Online (Sandbox Code Playgroud)