java - 在每次访问应用程序时使用 SharedPreferences 将数据附加到数组中

标签 java android arraylist sharedpreferences

由于 SharedPrefereces 帮助我们存储持久数据,我在应用程序中使用它来存储少量数据(使用 TinyDB ),而我认为不需要使用 SQLite。

我正在做的是从用户那里获取一些值并将其存储在 ArrayList 中。当用户退出应用程序或操作系统终止应用程序并再次启动应用程序时,我希望将新数据添加到上述同一 ArrayList 中。

我不明白如何搜索它,但尝试发现 this就 SO 本身而言。
虽然它没有解决我的问题,所以决定询问。

编辑:代码 fragment

单击按钮时将元素添加到数组列表

bt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            place = et.getText().toString();
            if(place.length()!=0){
                Toast.makeText(getBaseContext(), place + " is scanned.", Toast.LENGTH_SHORT).show();
                placeArray.add(place);
                CalculateLatLong();

            }
            else{
                Toast.makeText(getBaseContext(),"Enter place to search.", Toast.LENGTH_SHORT).show();

            }

        }
    });


在CalculateLatLong()中

   ...
   TinyDB tinydb = new TinyDB(this);
   tinydb.putListString("locationName", placeArray);
   ...

我想将 placeArray 添加到 locationName
由于 placeArray 在每次应用程序终止时都会初始化为 null,因此每次它都是一个新列表,我想将其与 locationName 内容合并。

我这样做吗需要通过覆盖 Activity 的 onPause 状态来执行某些操作吗?如果是的话怎么办?
谢谢。

最佳答案

当您在函数中将列表保存到数据库时,您只需在 onResume 方法中添加代码。您需要填充 placeArray:

void onResume(){
    super.onResume();
    TinyDB tinydb = new TinyDB(getContext());
    placeArray = tinydb.getListString("locationName"); // This will either return saved list (if saved), or empty list
}

关于java - 在每次访问应用程序时使用 SharedPreferences 将数据附加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45846964/

相关文章:

android - 使用 Thumbnailutils 显示缩略图时出现问题

android - 使用 android studio 与 ./gradlew assemble[FlavourName]Release 生成 flavor 签名 APK 提供不同的结果

Android:唤醒和解锁手机

java - 在 java JFace 对话框中禁用关闭按钮?

java - 无法调用 Tomcat 管理器 : Server returned HTTP response code: 401

java - java 访问数组

java - 如何在java中比较两个对象(具有未排序的值)

java - 如何将 JSON 字符串转换为对象的数组列表

java - ArrayList源码中容量检查IF条件有什么用

java - 在数组列表中存储二叉搜索树