example android arraylist sharedpreferences serializable

example - ArrayList de Android de objetos personalizados-Guardar en SharedPreferences-¿Serializable?



gson gradle android (5)

La respuesta anterior funciona, pero no para la lista:

Para guardar la lista de objetos haz esto:

List<Cars> cars= new ArrayList<Cars>(); cars.add(a); cars.add(b); cars.add(c); cars.add(d); gson = new Gson(); String jsonCars = gson.toJson(cars); Log.d("TAG","jsonCars = " + jsonCars);

Lee el objeto json:

Type type = new TypeToken<List<Cars>>(){}.getType(); List<Cars> carsList = gson.fromJson(jsonCars, type);

Tengo una ArrayList de un objeto. El objeto contiene los tipos ''Bitmap'' y ''String'' y luego solo getters y setters para ambos. En primer lugar es Bitmap serializable?

¿Cómo voy a serializar esto para almacenarlo en SharedPreferences? He visto a muchas personas hacer una pregunta similar, pero ninguna parece dar una buena respuesta. Preferiría algunos ejemplos de código si es posible.

Si el mapa de bits no es serializable, ¿cómo hago para almacenar este ArrayList?

muchas gracias.


Para guardar:

public static void saveSharedPreferencesLogList(Context context, List<PhoneCallLog> callLog) { SharedPreferences mPrefs = context.getSharedPreferences(Constant.CALL_HISTORY_RC, context.MODE_PRIVATE); SharedPreferences.Editor prefsEditor = mPrefs.edit(); Gson gson = new Gson(); String json = gson.toJson(callLog); prefsEditor.putString("myJson", json); prefsEditor.commit(); }

Para la carga:

public static List<PhoneCallLog> loadSharedPreferencesLogList(Context context) { List<PhoneCallLog> callLog = new ArrayList<PhoneCallLog>(); SharedPreferences mPrefs = context.getSharedPreferences(Constant.CALL_HISTORY_RC, context.MODE_PRIVATE); Gson gson = new Gson(); String json = mPrefs.getString("myJson", ""); if (json.isEmpty()) { callLog = new ArrayList<PhoneCallLog>(); } else { Type type = new TypeToken<List<PhoneCallLog>>() { }.getType(); callLog = gson.fromJson(json, type); } return callLog; }

PhoneCallLog es el nombre de mi objeto personalizado. (Contiene cadena, valores largos y booleanos)


Para mí funcionó así:

Poner valores en Preferencias Compartidas:

String key = "Key"; ArrayList<ModelClass> ModelArrayList=new ArrayList(); SharedPreferences shref; SharedPreferences.Editor editor; shref = context.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); Gson gson = new Gson(); String json = gson.toJson(ModelArrayList); editor = shref.edit(); editor.remove(key).commit(); editor.putString(key, json); editor.commit();

Para obtener valores de SharedPreferances:

Gson gson = new Gson(); String response=shref.getString(key , ""); ArrayList<ModelClass> lstArrayList = gson.fromJson(response, new TypeToken<List<ModelClass>>(){}.getType());


Sí, puede guardar su objeto compuesto en preferencias compartidas. Digamos..

Student mStudentObject = new Student(); SharedPreferences appSharedPrefs = PreferenceManager .getDefaultSharedPreferences(this.getApplicationContext()); Editor prefsEditor = appSharedPrefs.edit(); Gson gson = new Gson(); String json = gson.toJson(mStudentObject); prefsEditor.putString("MyObject", json); prefsEditor.commit();

..y ahora puedes recuperar tu objeto como:

SharedPreferences appSharedPrefs = PreferenceManager .getDefaultSharedPreferences(this.getApplicationContext()); Gson gson = new Gson(); String json = appSharedPrefs.getString("MyObject", ""); Student mStudentObject = gson.fromJson(json, Student.class);

Para más información, haga clic here.

Si desea recuperar una ArrayList de cualquier tipo de objeto, por ejemplo, Student , utilice:

Type type = new TypeToken<List<Student>>(){}.getType(); List<Student> students = gson.fromJson(json, type);


Escribe un código en tus Preferencias Compartidas:

public class MySharedPrefernce { private Context context; private String PREF_NAME = "UserPreference"; private int PRIVATE_MODE = 0; private SharedPreferences preferences; private SharedPreferences.Editor editor; private DataKey = "CART_RESTAURANTS"; //constructor public MySharedPrefernce(Context context) { this.context = context; this.preferences = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); editor = preferences.edit(); } //add data public void saveRestaurantToSharedPrefs(List<CartRestaurantModel> cartRestaurantModel) { Gson gson = new Gson(); String jsonCart = gson.toJson(cartRestaurantModel); editor.putString(DataKey, jsonCart); editor.commit(); } //get data public ArrayList<CartRestaurantModel> getRestaurantToSharedPrefs() { List<CartRestaurantModel> cartData; if (preferences.contains(DataKey)) { String jsonCart = preferences.getString(DataKey, null); Gson gson = new Gson(); CartRestaurantModel[] cartItems = gson.fromJson(jsonCart, CartRestaurantModel[].class); cartData = Arrays.asList(cartItems); cartData = new ArrayList<CartRestaurantModel>(cartData); } else { try { return new ArrayList<CartRestaurantModel>(); } catch (Exception e) { e.printStackTrace(); return null; } } return (ArrayList<CartRestaurantModel>) cartData; } //clear data public void clearRestaurantSharedPrefsData() { editor.clear(); editor.commit(); } }

Escribe un código en tu Actividad / Fragmento para almacenar y recuperar:

public List<CartRestaurantModel> cartRestaurantModel = new ArrayList<CartRestaurantModel>(); // to maintain restaurant for cart menus

Almacenar :

new MySharedPrefernce(this).saveRestaurantToSharedPrefs(cartRestaurantModel);

Para recuperar:

cartRestaurantModel = new MySharedPrefernce(this).getRestaurantToSharedPrefs();