gpt4 book ai didi

android - 保存自定义对象 ArrayList 的状态

转载 作者:行者123 更新时间:2023-12-03 22:30:35 24 4
gpt4 key购买 nike

我想在改变方向后恢复阵列的状态。但我没有看到这种情况下的专有功能。我该怎么办?

public class PuzzlePiece extends android.support.v7.widget.AppCompatImageView {
public int xCoord;
public int yCoord;
public int pieceWidth;
public int pieceHeight;
public boolean canMove = true;

public PuzzlePiece(Context context) {
super(context);
}

这是我的 onSave 方法
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelableArray("image", pieces);
}
}

和数据初始化:
ArrayList<PuzzlePiece> pieces;

最佳答案

基本上,你需要实现两个方法:saveData() 和 loadData()。这些将使用 GSON 库将任何对象转换为字符串,然后重新创建它们。然后,您可以在任何需要的地方保存和恢复您的对象。您可以在调用 onPause() 方法时或在其他任何地方这样做。
这是代码:
首先,在 build.gradle 中添加以下依赖行:

implementation 'com.google.code.gson:gson:2.8.6'
然后你写这两个方法
 private void saveData(){
SharedPreferences sharedPreferences = getSharedPreferences("shared preferences id", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
Gson gson = new Gson();
String json = gson.toJson(arraylistOfYourObjects);
editor.putString("data_id", json);
editor.apply();
}

private void loadData(){
SharedPreferences sharedPreferences = getSharedPreferences("shared preferences id", MODE_PRIVATE);
Gson gson = new Gson();
String json = sharedPreferences.getString("data_id", null);
Type type = new TypeToken<ArrayList<YourObjectClass>>() {}.getType();
arraylistOfYourObjects = gson.fromJson(json, type);
if(arraylistOfYourObjects == null){
arraylistOfYourObjects = new ArrayList<>();
}
}
这是一个完整视频的链接,该视频介绍了如何使用所有细节来完成整个操作:
https://www.youtube.com/watch?v=jcliHGR3CHo

关于android - 保存自定义对象 ArrayList 的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56516102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com