فیلتر جستجو روی Recycler View در اندروید – راهنمای کاربردی


اگر به طور مکرر نیازمند پیادهسازی قابلیت جستجو برای لیستها در اپلیکیشنهای اندرویدی هستید، این مقاله برای شما کاملاً مفید خواهد بود. در این راهنما روشی عالی برای پیادهسازی یک آداپتر دینامیک مجرد معرفی میکنیم که میتواند برای استفاده از فیلتر جستجو روی Recycler View به کار گرفته شود.
شروع
ابتدا باید یک آداپتر Recycler View بسازید تا لیستبندیها را مدیریت کنید. با این حال به جای نوع استاندارد، DynamicSearchAdapter (+) را بسط میدهیم.
زمانی که این کار را انجام دادید، لیست خود را در اختیار آداپتر والد قرار دهید و ضمناً لیست را داخل <> به عنوان پارامتر نوع قرار دهید. اینک میتوانید از قابلیت جستجو در هر تعداد از لیستها در اکتیویتیها یا فرگمانها استفاده کنید.
برای نمونه یک پیادهسازی ساده برای 2 مورد از آداپترهای متفاوت میتواند مانند زیر باشد:
کد آداپتر جستجوی دینامیک مجرد به صورت زیر است:
انواع لیست که دارید باید اینترفیس Searchable را که در کلاس آداپتر فوق لیست شده پیادهسازی کنند تا قابلیت جستجو شدن را پیدا کنند. برای آشنایی با یک نوع از لیست SearchModel1 و SearchModel2 به مثالهای زیر توجه کنید:
لیستهای شما میتوانند مانند <List<SearchModel1 و <List<SearchModel2 باشند و همچنین باید یک کوئری جستجو بازگشت دهید که با متد getSearchCriteria هر کلاس مقایسه میشود. این متد برای فیلتر کردن دادههای هر لیست منفرد مورد استفاده قرار میگیرد. تا زمانی که الزامات فوق را رعایت کردهاید، میتوانید هر تعداد لیست که دوست دارید ایجاد نمایید. متد search میتواند برای تحریک جستجو روی لیست مورد استفاده قرار گیرد. متد search به صورت ناهمگام از سوی اینترفیس Filterable اندروید اجرا میشود و از جستجوی خطی با دو پارامتر بهره میگیرد:
- String: کوئری جستجو
- ?(Unit<-()): یک بدنه لامبدا برای فراخوانی در مواردی که هیچ نتیجهای برای جستجو یافت نشده است. از آن میتوان برای بهروزرسانی UI یا null استفاده کرد.
مثالی از یک اکتیویتی ساده مانند زیر کار میکند به این صورت است که کاربر دادهها را در نمای جستجو وارد میکند. در صورتی که هیچ نتیجهای مطابق ورودی در لیست پیدا نشود یک toast نمایش پیدا میکند.
شیوه اجرا
سورس کد این پروژه را میتوانید در این آدرس (+) ببینید. این سورس شامل یک اکتیویتی و 3 فرگمان به عنوان مثال است که همگی یک لیست قابل جستجو را با استفاده از یک recycler view نمایش میدهند. همچنین آداپترهایی دارند که آداپتر Dynamic Search را بسط میدهد. میتوانید این پروژه را در اندروید استودیو کلون کرده و اجرا نمایید.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی اندروید
- گنجینه برنامهنویسی اندروید (Android)
- مجموعه آموزشهای برنامهنویسی
- RecyclerView با اسکرول روان در اندروید — راهنمای مقدماتی
- نکات کلیدی اندروید ۱۰ برای توسعه دهندگان — راهنمای کاربردی
==