一、简介
存储List数据到本地的方式有很多种,对于不想用sqlite或者其他方式,又或是数据量很少的话,不妨可以试下用 SharedPreferences保存。由于SharedPreferences只能保存Map型的数据,必须要做其他转换才行。
二、应用场景
用于保存各种List数据,最常见的莫过于,ListView、Gridviw中的数据,支持类型有:
(1)List<String>
(2)List<Map<String,Object>>
(3)List<JavaBean>
三、代码实例:
- public class ListDataSave {
- private SharedPreferences preferences;
- private SharedPreferences.Editor editor;
- public ListDataSave(Context mContext, String preferenceName) {
- preferences = mContext.getSharedPreferences(preferenceName, Context.MODE_PRIVATE);
- editor = preferences.edit();
- }
- /**
- * 保存List
- * @param tag
- * @param datalist
- */
- public <T> void setDataList(String tag, List<T> datalist) {
- if (null == datalist || datalist.size() <= 0)
- return;
- Gson gson = new Gson();
- //转换成json数据,再保存
- String strJson = gson.toJson(datalist);
- editor.clear();
- editor.putString(tag, strJson);
- editor.commit();
- }
- /**
- * 获取List
- * @param tag
- * @return
- */
- public <T> List<T> getDataList(String tag) {
- List<T> datalist=new ArrayList<T>();
- String strJson = preferences.getString(tag, null);
- if (null == strJson) {
- return datalist;
- }
- Gson gson = new Gson();
- datalist = gson.fromJson(strJson, new TypeToken<List<T>>() {
- }.getType());
- return datalist;
- }
- }