PDA

View Full Version : آپدیت لیست ویو ( به کندی انجام میشه)



Amin-rz
سه شنبه 08 مهر 1393, 09:50 صبح
سلام.
یه لیست ویو کاستوم دارم که قراره 5000تا آیتم رو نشون بده.
دز شروع نرم افزار 5 تا از آیتم ها رو نشون میده و وقتی کاربر روی یه دکمه کلیک می کنه 5 تا آیتم دیگه اضافه میشه و در مجموع 10 آیتم رو نشون میده.


\\این رشته در کد من خیلی طولانی تر هست
final String dataOffline = "اس ام اس جوك****اس ام اس خنده دار****تقديم به****اس ام اس سرکاری****اس ام اس ضد دختر**** اس ام اس ضد پسر ****... چیست ؟****کل کل های فوتبالی****اس ام اس پـ نه پـ****اصن يه وضي****درد دل شما ****سوتی های شما****اس ام اس التماس دعا";


//جدا کردن قسمت های رشته dataOffline
final String[] str = dataOffline.split("\\*\\*\\*\\*");

int end = 5;

ArrayList<String> offlineret = new ArrayList<String>();
for(int i =0;i<end;i++){
offlineret.add(i,str[i]);
}


//تنظیم آداپتر در لیست ویو
ArrayAdapter arrayAdapter = new AdaptereMan (this, R.layout.offlinerow, R.id.label, offlineret);
list.setAdapter(arrayAdapter);



اینم آداپتر کاستوم:


private class AdaptereMan extends ArrayAdapter <String> {



public AdaptereMan(Context context, int resource,
int textViewResourceId, List<String> objects) {
super(context, resource, textViewResourceId, objects);
// TODO Auto-generated constructor stub
}


@Override
public View getView (int makan, View convertView, ViewGroup parent) {

LayoutInflater bazkonande = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View radif = bazkonande.inflate(R.layout.offlinerow, parent, false);
String[] radifha = string;
ImageView tasvir = (ImageView) radif.findViewById(R.id.imageView1);
TextView matn = (TextView) radif.findViewById(R.id.label);
TextView number = (TextView) radif.findViewById(R.id.textViewNumber);
number.setText(makan+1+"");
matn.setText (radifha[makan]);


return radif;
}

}


اینم دکمه ای که کاربر برای دیدن آیتم های بیشتر روش کلیک می کنه:


btnUpdate.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

for(int i=end+1;i<=end+5;i++){
offlineret.add(i,string[i]);}

list.setAdapter(arrayAdapter);


}
});



مشکلی با کد ندارم و کار می کنه.ولی تعداد آیتم ها که بالا میره کند میشه.
مثلا وقتی 5 تا آیتم نشون میده و کاربر روی دکمه btnUpdate کلیک می کنه خیلی سریع لیست 10 تا آیتم رو نشون میده.
ولی مثلا وقتی کاربر 100 تا آیتم رو تو لیست داره و روی دکمه آپدیت میزنه حدود 8 ثانیه طول می کشه تا 5 تا آیتم بعدی اضافه بشه.
در واقع با هر بار کلیک روی دکمه آپدیت , کل لیست ویو از ردیف 1 تا ردیف 105 می خواد بازسازی بشه که زمان میبره.
حالا حساب کنید اگه 1000تا آیتم تو لیست باشه و کاربر روی دکمه آپدیت بزنه برای اضافه شدن 5 تا آیتم ناقابل باید 1 دقیقه منتظر بمونه چون ردیف های لیست باید از 1 تا 1005 دوباره بازسازی بشه.
چه راهکاری پیشنهاد میدید؟

Amin-rz
چهارشنبه 09 مهر 1393, 08:54 صبح
این برنامه پیامکی ها چطور لیست ویوشون آپدیت میشه که انقدر سریع هست؟
اگه قرار باشه 2000 تا پیامک نشون بدن که خیلی کند میشه برنامه!