Is it possible to add an array or object to SharedPreferences on Android

前端 未结 11 1804
别跟我提以往
别跟我提以往 2020-11-22 11:27

I have an ArrayList of objects that have a name and an icon pointer and I want to save it in SharedPreferences. How can I do?

NOTE:

11条回答
  •  佛祖请我去吃肉
    2020-11-22 12:00

    For writing:

     private  void storeData(String key, T data) {
        ByteArrayOutputStream serializedData = new ByteArrayOutputStream();
    
        try {
            ObjectOutputStream serializer = new ObjectOutputStream(serializedData);
            serializer.writeObject(data);
        } catch (IOException e) {
            e.printStackTrace();
        }
    
        SharedPreferences sharedPreferences = getSharedPreferences(TAG, 0);
        SharedPreferences.Editor edit = sharedPreferences.edit();
    
        edit.putString(key, Base64.encodeToString(serializedData.toByteArray(), Base64.DEFAULT));
        edit.commit();
    }
    

    For reading:

    private  T getStoredData(String key) {
        SharedPreferences sharedPreferences = getSharedPreferences(TAG, 0);
        String serializedData = sharedPreferences.getString(key, null);
        T storedData = null;
        try {
            ByteArrayInputStream input = new ByteArrayInputStream(Base64.decode(serializedData, Base64.DEFAULT));
            ObjectInputStream inputStream = new ObjectInputStream(input);
            storedData = (T)inputStream.readObject();
        } catch (IOException|ClassNotFoundException|java.lang.IllegalArgumentException e) {
            e.printStackTrace();
        }
    
        return storedData;
    }
    

提交回复
热议问题