2017-01-06 38 views
-2

这是我savaData和loadData方法是用来保存和加载数据sharedpreferences没有保存或加载我的数据的Android

public void saveData(){ 
     SharedPreferences sharedPreferences= getActivity().getSharedPreferences("SubjectTitle", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor=sharedPreferences.edit(); 
     int i=0,n; 
     n=addArray.size(); 
     for(Bunk b: addArray) { 
      editor.putString("Title"+i, b.getTitle()); 
      editor.putInt("No_of_bunk"+i, b.getBunk_remain()); 
      editor.putFloat("pre_of_att"+i, b.getPrecentageAtt()); 
      i++; 
     } 
     editor.putInt("size_of_data",n); 
     editor.apply(); 
     Toast.makeText(getActivity(),"data saved",Toast.LENGTH_SHORT).show(); 

    } 
    public ArrayList<Bunk> loadData(){ 
     SharedPreferences sharedPreferences= getActivity().getSharedPreferences("SubjectTitle", Context.MODE_PRIVATE); 
     int n=sharedPreferences.getInt("size_pf_data",Default); 
     String loadTitle; 
     int loadBunk; 
     float loadAtt; 
     for(int i=0;i<n;i++){ 
      loadTitle=sharedPreferences.getString("Title"+i,DEFAULT); 
      loadBunk=sharedPreferences.getInt("No_of_bunk"+i,Default); 
      loadAtt=sharedPreferences.getFloat("pre_of_att"+i,def_ault); 
      addArray.add(new Bunk(loadTitle,loadBunk,loadAtt)); 
     } 
     return addArray; 
    } 

这里是用来从loadData方法加载数据的代码

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup perent, Bundle savedInstanceState) { 

    super.onCreateView(inflater, perent, savedInstanceState); 
    View v = inflater.inflate(R.layout.fragment_main, perent, false); 
     show=(ListView)v.findViewById(android.R.id.list); 
    addArray=loadData(); 
    adapter=new BunkAdapter(addArray); 
    show.setAdapter(adapter); 
    return v; 
} 
+0

欢迎来到Stack Overflow!你可以先参加[游览]并学习[问]一个很好的问题,然后创建一个[mcve]。这使我们更容易帮助你。 – Katie

回答

1

首先,使用editor.commit();保存数据后,或直接:editor.putString("Title"+i, b.getTitle()).commit(); 其次,我认为你的想法是错误的,共享偏好设置或少量数据的东西更好,在你的情况下,你应该使用SQLite来保存大量的数据。