سرچ به همراه pagination

پرسیده شده
فعالیت 1485 روز پیش
دیده شده 894 بار
0

سلام استاد

در همین پروژه اگر تعداد آیتم ها زیاد باشه مثلا 150 تا و بخوایم سرچ کنیم مشکلی در performance لیست پیش نمیاد ؟

چون تعداد زیادی از آیتم ها باید inflate بشن و همزمان 150 تا آیتم ادد بشه به لیست. 

اگر در خصوص سرچ در دیتابیس با pagination هم صحبت کنید ممنون میشم .

فایل پیوست

Mehrdad Fadaei
Mehrdad Fadaei

18 فروردین 99

1
حذف شده

سلام قطعا در هر لحظه تعداد آیتمی که در صفحه نمایش مشاهده می کنید به علاوه چند آیتم قبلی و بعدی در دسترس هست.

شما وقتی از دیتابیس جستجو می کنید نتیجه رو دریافت و سپس داخل ریسایکلرویو نمایش میدید

منبع شما برای سرچ دیتابیس باید باشه نه ریسایکلرویو

فایل پیوست

وحید گروسی

توسط

وحید گروسی

18 فروردین 99

1
حذف شده

سلام.

* عمل inflate فقط به اندازه ی آیتم هایی که روی گوشی قابل نمایش هست انجام میشه. یعنی فرضاً برای یک لیست ۱۵۰ تایی عملا ۵ تا یا ۶ تا یا ۷ تا بسته به سایز صفحه نمایش گوشی، این عمل انجام میشه نه بیشتر.

زمانی که یک آیتم از صفحه خارج میشه، همون آیتم جاشو به آیتمی که داخل صفحه میاد میده و onBindViewHolder فراخوانی میشه.

* قبل ازینکه متد onBind فراخوانی بشه، recycler چندین مورد در حافظه از جمله کش حافظه رو چک میکنه تا اگر آیتم مورد نظر وجود نداشت، بعد متد onBindViewHolder رو فراخوانی کنه.

بنابراین میتونید از متد زیر استفاده کنید برای کش کردن و نگه داشتن آیتم های بیشتری در حافظه: (مقدار پیشفرض ۲ هست)

recyclerView.setItemViewCacheSize(20)

 

* اگر width و height آیتم لیوت مقدار مشخصی داره و مقادیرشون به محتوایی که داخل adapter میذارید وابسته نیستن، میتونید متد زیرو استفاده کنید تا هربار که بایند میشن، مقادیر محاسبه نشن:

recyclerView.setHasFixedSize(true)

 

* نکته ی دیگه، توصیه شده اگر به فکر performance بالای recyclerview هستیم از constraint layout استفاده نکنیم.

 

* مسئله آخر هم در مورد ۱۵۰ یا مقادیر بیشتری از رکوردهایی که از دیتابیس میگیرید (Endless Scrolling) داخل نت مطلب زیاده درموردش.

فایل پیوست

محسن موحد

توسط

محسن موحد

19 فروردین 99

حذف شده
سلام.ببخشید ولی فک کنم constraintlayout هست که باعث میشه ایتمای ریسایکلرویو که پیچیده هستند رو با performance بهتری پیاده سازی شه.
sharareh amiri

23 فروردین 99

حذف شده
سلام. constraint لیوت از لحاظ قیدهایی که داره نسبت به ViewGroup های دیگه سنگینتره و در هرباری که RecyclerView لیوت رو inflate میکنه، قطعا بار بیشتری روی حافظه میذاره نسبت به دیگر ViewGroup ها.
محسن موحد

9 اردیبهشت 99

حذف شده
متاسفانه notification ای برای رد گیری تاپیک ها وجود نداره و نمیشه تاپیک هارو همراه بود. برای مثال الان من دنبال یک تاپیکی میگردم که قبلا پاسخ دادم و میخوام ببینم چه جوابی اونجا نوشتم ولی حتی لیست تاپیک هایی که شرکت کردم رو هم ندارم و شانسی به این تاپیک رسیدم.
محسن موحد

9 اردیبهشت 99