首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在改变安卓系统活动时保持ArrayList的值

在改变安卓系统活动时保持ArrayList的值,可以使用以下方法:

  1. 使用Bundle保存ArrayList:在Activity的onSaveInstanceState方法中,将ArrayList以键值对的形式保存到Bundle对象中,然后在onCreate方法中恢复该ArrayList。这样可以确保当Activity被销毁后重新创建时,ArrayList的值不会丢失。
代码语言:txt
复制
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putSerializable("list", arrayList);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (savedInstanceState != null) {
        arrayList = (ArrayList<String>) savedInstanceState.getSerializable("list");
    }
}
  1. 使用SharedPreferences保存ArrayList:将ArrayList转换为字符串,然后使用SharedPreferences将字符串保存起来。在下次需要恢复ArrayList时,从SharedPreferences中取出字符串并重新转换为ArrayList。
代码语言:txt
复制
// 保存ArrayList到SharedPreferences
SharedPreferences sharedPrefs = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPrefs.edit();
Set<String> set = new HashSet<>(arrayList);
editor.putStringSet("list", set);
editor.apply();

// 从SharedPreferences中恢复ArrayList
Set<String> set = sharedPrefs.getStringSet("list", null);
if (set != null) {
    arrayList = new ArrayList<>(set);
}
  1. 使用ViewModel保存ArrayList:使用Android Architecture Components中的ViewModel来保存ArrayList的实例。ViewModel在配置变更(如屏幕旋转)时会保持数据的一致性,以便Activity可以重新获取到相同的ArrayList实例。

首先,在build.gradle文件中添加以下依赖:

代码语言:txt
复制
implementation "androidx.lifecycle:lifecycle-viewmodel:2.4.0"

然后,创建一个继承自ViewModel的类,在该类中定义一个ArrayList变量,并提供相应的getter和setter方法。

代码语言:txt
复制
public class MyViewModel extends ViewModel {
    private ArrayList<String> arrayList;

    public void setArrayList(ArrayList<String> arrayList) {
        this.arrayList = arrayList;
    }

    public ArrayList<String> getArrayList() {
        return arrayList;
    }
}

在Activity中使用ViewModel:

代码语言:txt
复制
private MyViewModel viewModel;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    viewModel = new ViewModelProvider(this).get(MyViewModel.class);

    if (savedInstanceState != null) {
        ArrayList<String> savedArrayList = savedInstanceState.getStringArrayList("list");
        viewModel.setArrayList(savedArrayList);
    }

    // 使用viewModel.getArrayList()获取ArrayList实例
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putStringArrayList("list", viewModel.getArrayList());
}

通过以上方法,可以在改变安卓系统活动时保持ArrayList的值,并且不涉及到特定的云计算品牌商。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券