سلام، در این مقاله نحوه جستجو با AutoCompleteTextView در اندروید با Kotlin را مورد بحث قرار خواهم داد.
AutoCompleteTextView یک جزء رابط کاربری است که ورودی متن را با عملکرد تکمیل خودکار راحت می کند. این به کاربر امکان میدهد متن را در یک کادر متن وارد کند و در حین تایپ، AutoCompleteTextView لیستی از گزینههای منطبق یا مرتبط را بر اساس ورودی وارد شده توسط کاربر نمایش میدهد.
1. مرحله اول آماده سازی داده ها
در این حالت از دادههای JSON که در assets ذخیره کردیم استفاده میکنیم، در موارد دیگر میتوانیم از داده های گرفتهشده از API نیز استفاده کنیم.
ابتدا یک فایل JSON در پوشه assets با نام customer_list.json ایجاد می کنیم. سپس داده های json را به شکل زیر پر کنید.
و حالا کلاس داده را برای دریافت داده های JSON آماده کنید. در اینجا یک کلاس داده با نام DataItemResponse ایجاد می کنیم.
2. مرحله دوم آماده سازی Layout
بعد از اینکه داده ها را آماده کردیم در مرحله دوم چیدمان را آماده می کنیم. در (Layout) activity_main.xml یک AutoCompleteTextView به صورت زیر ایجاد می کنیم.
حالا یک item_data_autocomplete.xml ایجاد می کنیم که در آن از این layout برای نمایش لیست داده ها در آداپتور استفاده می شود.
3. مرحله سوم ادغام با AutoCompleteTextView
پس از آماده سازی داده ها و چیدمان، مرحله بعدی آماده سازی یک آداپتور با نام AutoCompleteAdapter برای مدیریت و نمایش داده ها در لیست است.
در این آداپتور، ArrayAdapter را گسترش می دهیم و نام و تلفنی را که هنگام جستجو در AutoCompleteTextView در لیست نمایش داده می شود تنظیم می کنیم. اکنون AutoCompleteTextView را با آداپتور در MainActivity ادغام می کنیم.
ابتدا متغیرهایی را برای مقداردهی اولیه آداپتور و غیره تنظیم می کنیم
حالا آداپتور را روی AutoCompleteTextView قرار می دهیم.
در مرحله بعد هنگامی که تغییری در AutoCompleteTextView با استفاده از addTextChangedListener ایجاد می شود Listener ایجاد می کنیم.
از کد بالا می بینیم که وقتی متن تغییرات ایجاد کرد، تابعی را برای بازیابی اطلاعات client با فراخوانی تابع getDataCustomerList با کلمه کلیدی به عنوان فیلتر فراخوانی می کند. و این عملکرد با زمان انتظار 300 میلیثانیه در عملکرد زمانبندی گنجانده شده است که به جلوگیری از تماسهای بیش از حد یا بیش از حد مکرر با سرور یا سایر منابع داده در هنگام تایپ سریع کاربر کمک میکند. در نتیجه، عملکرد برنامه حفظ می شود و استفاده از منابع کارآمد باقی می ماند.
اکنون تابع getDataCustomerList را ایجاد می کنیم. این تابع داده های JSON را در دارایی های محلی بازیابی می کند.
به عنوان یک نکته، اگر از API برای بازیابی داده ها استفاده می کنید این تابع را تغییر دهید تا داده ها را از API دریافت کنید.
در این تابع دادههای JSON را میگیریم، سپس آنها را بر اساس کلمات کلیدی فیلتر میکنیم و بعد از فیلتر کردن دادهها را تازهسازی میکنیم تا لیست دادهها را مطابق آنچه به دنبال آن هستیم نمایش دهد.
و در نهایت، وقتی روی لیست موجود در AutoCompleteTextView کلیک شود یک تابع ایجاد می کنیم که فقط نام در AutoCompleteTextView انتخاب می شود.
حالا بیایید آن را اجرا کنیم و نتیجه را ببینیم.
سورس کد : گیت هاب
ممنون که تا آخر این پست همراه من بودید ، امیدوارم براتون مفید بوده باشه 🙌🙏✌ (:
بقیه آموزش های mister developer را می توانید در تلگرام و اینستاگرام دنبال کنید!!
کانال تلگرام: mister_developerr
اینستاگرام: mister_developerr
موفق و پیروز باشید