如何存储和检索具有共享首选项的字节数组数据的arraylist?

时间:2014-06-25 13:01:25

标签: android

  • 我正在尝试将字节数组数据保存在arraylist中,其工作正常,

                SharedPreferences sPrefs=PreferenceManager.getDefaultSharedPreferences(FirstActivity.this);
                SharedPreferences.Editor sEdit=sPrefs.edit();
    
                for(int i=0;i<byteArrayList.size();i++)
                {
                    sEdit.putString("val"+i,byteArrayList.get(i).toString());
                }
                sEdit.putInt("size",byteArrayList.size());
                sEdit.commit();
    
  • 我正在使用

    检索字节数组数据
        SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(ViewImagesActivity.this);
    
        myAList=new ArrayList<byte[]>();
        int size=sPrefs.getInt("size",0);
    
        for(int j=0;j<size;j++)
        {
            myAList.add(sPrefs.getString("val"+j,"")); // giving error for type mismatch for byte[] and string
    
    
        }
    
  • 请帮我解决这个问题..
  • 请告诉我是否有其他方式存储和检索此内容。
  • 提前谢谢

3 个答案:

答案 0 :(得分:1)

尝试以下代码: -

myAList.add(sPrefs.getString("val"+j,null).getBytes(Charset.forName("UTF-8")));

显示错误,因为字节数组的数组列表类型

 myAList=new ArrayList<byte[]>();

并添加字符串的值,以便给出错误。

答案 1 :(得分:0)

您正试图将String存储在Byte类型列表中:

myAList.add(sPrefs.getString("val"+j,)); 

您可以使用int代替Byte。有一种标准方法putIntgetInt用于在SharedPreferences

中存储和检索数据

答案 2 :(得分:0)

您必须使用add参数调用byte[]方法。使用String.getBytes方法执行反向操作,因此请更改代码的相关行:

myAList.add(sPrefs.getString("val"+j,"").getBytes());