【问题标题】:How would I save an Integer array list to shared preferences如何将整数数组列表保存到共享首选项
【发布时间】:2017-04-26 04:53:19
【问题描述】:

几天来,我一直在尝试在共享首选项中保存一个整数数组列表,但不知道该怎么做。

这是我要保存的数组列表

        ////list that contains checked routes///
        ArrayList<Integer> checkedRoutePosition = new ArrayList<>();

这是数组如何获取其中的值

       int listViewItemPosition = ((Activity) getContext()).getIntent().getIntExtra("listViewItemPosition",0);

       checkedRoutePosition.add(listViewItemPosition);

在您单击后退按钮后的另一个活动中,会启动一个新意图,将我带到此活动。 Intent 传入了我需要保存到数组的 listViewItemPosition 值。

以上代码行在我的列表视图自定义适配器的 getView 方法中。保存它们后,我想将它们与我的 getView 中的位置进行比较。在值相等的地方,我想设置某个图像。这段代码是正确的方法吗?

  for(int i=0; i<checkedRoutePosition.size(); i++)
                if(position == checkedRoutePosition.get(i)) {
                    checkImageView.setImageResource(checkImageResourceId);
                }

感谢您的帮助!

【问题讨论】:

    标签: android arrays listview sharedpreferences


    【解决方案1】:

    您不能将任何数组或数组列表写入共享首选项。您可以做的最接近的是将整数写入逗号分隔的字符串,写入字符串,并在需要读取它时对其进行解析。这仅适用于数组的大小相对较小的情况。如果它很大,您需要从 SharedPreferences 转移到另一种存储形式,例如文件或数据库。

    【讨论】:

    • 它将包含大约 180 个值。是不是太大了?
    • 它太大的主要影响是解析和读/写共享首选项的速度很慢,特别是如果同一个首选项文件中有其他数据。所以太大主要是由性能决定的。
    • 使用sql数据库会更好
    猜你喜欢
    • 2022-01-15
    • 2012-08-22
    • 1970-01-01
    • 2018-04-15
    • 2018-08-09
    • 2021-10-02
    • 2011-12-18
    • 2014-01-16
    • 2021-05-31
    相关资源
    最近更新 更多