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 دوباره بازسازی بشه.
چه راهکاری پیشنهاد میدید؟
یه لیست ویو کاستوم دارم که قراره 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 دوباره بازسازی بشه.
چه راهکاری پیشنهاد میدید؟