من با SharedPreferences توانستم ArrayList به Base Adapter انتقال دهم.
1.ایتدا در کلاس PreferenceActivity کد زیر را نوشتم:
2.سپس در یک کلاس با نام SaveArrayList توابع زیر را قرار دادم:
3.حال برای ذخیره ArrayList در کلاس مورد نظر قبل از onCreate عبارت زیر را نوشتم:
4.سپس در یک متد (مثلا onCreate) کد زیر را قرار دادم:
5.برای فراخوانی دادهها نیز به شکل زیر در کلاس Base Adapter عمل میکنیم (مرحله 3 دوباره برای شناساندن کلاس SaveArrayList تکرار شود):
1.ایتدا در کلاس PreferenceActivity کد زیر را نوشتم:
کد پیاچپی:
String Array= prefs.getString("array_name","");
2.سپس در یک کلاس با نام SaveArrayList توابع زیر را قرار دادم:
کد پیاچپی:
public boolean saveArray(String array, String arrayName, Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("array_name", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(arrayName +"_size", array.length);
for(int i=0;i<array.length;i++)
editor.putString(arrayName + "_" + i, array);
return editor.commit();
}
public String loadArray(String arrayName, Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("array_name", 0);
int size = prefs.getInt(arrayName + "_size", 0);
String array = new String;
for(int i=0;i<size;i++)
array = prefs.getString(arrayName + "_" + i, null);
return array;
}
3.حال برای ذخیره ArrayList در کلاس مورد نظر قبل از onCreate عبارت زیر را نوشتم:
کد پیاچپی:
SaveArrayList SaveArrayList = new SaveArrayList();
4.سپس در یک متد (مثلا onCreate) کد زیر را قرار دادم:
کد پیاچپی:
ArrayList<String> Array = new ArrayList<String>;();
//باید به String Array نبدیل شود
String arr = Array.toArray(new String[َArray.size()]);
//به جای
//array_name
//نامی را که قبلا در کلاس
//SharedPreferences
//قرار دادید جایگزین شود
SaveArrayList.saveArray(arr, "array_name",this);
5.برای فراخوانی دادهها نیز به شکل زیر در کلاس Base Adapter عمل میکنیم (مرحله 3 دوباره برای شناساندن کلاس SaveArrayList تکرار شود):
کد پیاچپی:
String cm= SaveArrayList.loadArray("array_name", this.context);
String array_value = cm[position];