کلیدستان

نسخه‌ی کامل: ارسال ArrayList به Base Adapter (در اندروید)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
باسلام
در برنامه‌ی من یک لیست ویو وجود دارد که باید برای هر آیتم آن مقداری در دیتابیس جستجو شود و نمایش داده شود اما این کار باعث وجود کمی کندی در اسکرول کردن صفحه می‌شود. من برای روان‌تر کردن سرعت برنامه می‌خواهم قبل از ساخته شدن آیتم‌ها مقدار را فراخوانی و آن را به شکل یک ArrayList به  Adapter بفرستم. چگونه می‌توانم این کار را انجام دهم؟
سلام.
فکر می کنم موضوع زیر کمکتون کنه :

http://www.kelidestan.com/forum/showthread.php?tid=4929


 
من با SharedPreferences توانستم ArrayList به Base Adapter انتقال دهم.
1.ایتدا در کلاس PreferenceActivity کد زیر را نوشتم:

کد پی‌اچ‌پی:
String Array= prefs.getString("array_name",""); 

2.سپس در یک کلاس با نام SaveArrayList توابع زیر را قرار دادم:

کد پی‌اچ‌پی:
public boolean saveArray(String array, String arrayNameContext 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 arrayNameContext 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 "_" inull);
       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 cmSaveArrayList.loadArray("array_name"this.context);
String array_value cm[position];