SharedPreferences存储ArrayList集合

来源:互联网 发布:文玩淘宝店 编辑:程序博客网 时间:2024/05/22 01:34


       我通过上面的Popupwindow写数据,然后显示在listView上,listView的数据源就是ArraysList<String>集合.我的listView是显示在碎片上面的.我在onDestoryView方法中保存数据到XML文件上,然后再onCreateView中提取数据


public Class FragmentMoive extends Fragment{

...

ArrayList<String> list;

SharedPreferences.Editor editor;//存数据

SharedPreferences pref;//取数据

onCreateView(LayoutInflater inflater,ViewGroup container,BundlesavedInstanceState){

list = new ArrayList();//先给list分配空间,才能取数据放在里面

pref = getActivity().getSharedPreferences("data",MOD_PRIVATE);//初始化pref,固定格式

if( pref!=null ){//确保pref不为空

for(int i = 0 ; ; i++){//我没有写循环结束的代码,因为我不知道我结束时候的KEY是多少

if( pref.contains(i) ){ //contains()方法是判断KEY对应里面有没有数据,如果没有就返回false。这相当于结束。

list.add(pref.getString(i+" "," "))

}else{

break;

}

}

}

}

.....

onDestorView(){

super.onDestorView();

pref.edit().clear().apply();                                                      //碎片不可见的时候调用这个方法清除XML文件中的数据,这里是为了我删除数据准备的

editor = getActivity.getSharedPreferences("data",MODE_PRIVATE).edit();  //前面是XML文件名,后面参数没有其他的写法。初始化editor。

if( list!=null ){//list是我的Arraylist集合,里面的数据在上面从那个方法被添加进去了。不是重点我没写。

for(int i = 0 ; i <list.size() ; i++){

editor.putString(i+" ", list.get(i) )//左边是KEY,右边是对应的值

}

}

editor.apply();//提交数据

}

}