انجمن سایت کلیدستان



افزایش سرعت scrolling لیست ویو (در برنامه نویسی اندروید)زمان کنونی: ۱۳۹۵/۰۹/۱۷، ۰۴:۵۷ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: ramtin2080
آخرین ارسال: admin
پاسخ 2
بازدید 621

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
افزایش سرعت scrolling لیست ویو (در برنامه نویسی اندروید)

افزایش سرعت scrolling لیست ویو (در برنامه نویسی اندروید)

#1
در لیست ویوی اپلیکیشن من  روی هر آیتم پردازش تقریبا سنگینی انجام می‌گیرد (مانند خواندن اطلاعات از یک دیتابیس یک مگابایتی و گرفتن خروجی از یک الگوریتم) و هنگامی که لیست ویو را به سمت بالا و پایین اسکرول می‌کنم کمی لگ و کندی در برنامه مشاهده می‌شود و گاهی باعث خارج شدن از برنامه می‌گردد. با جستجو در اینترنت هم متدی به نام ViewHolder پیدا کردم که گفته می‌شد در افزایش سرعت اسکرول موثر است بنابراین کدم را به شکل زیر تغییر دادم (در درستی کد تردید دارم)، اما همچنان کمی لگ و کندی مشاهده می‌شود:

کد پی‌اچ‌پی:
public View getView(int positionView convertViewViewGroup parent) {
        
ViewHolder holder;
        if(
convertView==null) {
            
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            
convertView inflater.inflate(R.layout.network_list_rownull);
            
holder = new ViewHolder();
            
holder.text1= (TextView)convertView.findViewById(R.id.txt1);
            
holder.text2 =(TextView)convertView.findViewById(R.id.txt2);
            
holder.text3 =(TextView)convertView.findViewById(R.id.txt3);
            
holder.text4 = (TextView)convertView.findViewById(R.id.txt4);
            
holder.text5 = (TextView)convertView.findViewById(R.id.txt5);
            
holder.imageView = (ImageView)convertView.findViewById(R.id.imageView1);
            
convertView.setTag(holder);
        }else{
            
holder= (ViewHolderconvertView.getTag();
        }
                        
holder.text1.setText(convertView.getContext().getString(R.string.11_msgmyValue1));
        
holder.text2.setText(Integer.toString(myValue2));
        
holder.text3.setText(convertView.getContext().getString(R.string.22_msgmyValue3));
        
holder.text4.setText(convertView.getContext().getString(R.string.33_msg,myValue4));
        
holder.text5.setText(convertView.getContext().getString(R.string.44_msg,myValue5));
return 
convertView;
    }
private static class 
ViewHolder {
        public 
TextView text1;
        public 
TextView text2;
        public 
TextView text3;
        public 
TextView text4;
        public 
TextView text5;
        public 
ImageView imageView;
    } 
پاسخ

افزایش سرعت scrolling لیست ویو (در برنامه نویسی اندروید)

#2
سلام.
چون فراخوانی از پایگاه داده را هنگام ساخت View مربوط به item های ListView انجام می دهید، بنابراین ساخت View آنها طول می کشد. می توانید فراخوانی همه مقادیر را در ابتدای اجرای Activity انجام بدهید و آنها را در بک تعداد آرایه (Array) قرار داده، بعد که اطلاعات را به صورت یک سری آرایه داشتیم، آنگاه کد مربوط به ListView را بر اساس آن آرایه ها اجرا کنید.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط ramtin2080


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)