مهدی عادلی فر
بنیانگذار توسینسو و برنامه نویس

آموزش اصافه کردن Auto Complete در متن های اندروید

در خیلی از صفحه های اینترنتی و بعضی از برنامه های اندرویدی می بینیم که وقتی در حال تایپ کردن متنی هستیم مقادیری ظاهر می شوند که می توانیم از داخل آنها کلمه مورد نظر را که تایپ می کنیم را انتخاب کنیم. حال در این مطلب می خواهیم ببینیم که در اندروید این کار به چه شکلی پیاده سازی می شود. شما در اندروید می توانید این کار را با استفاده از AutoCompleteTextView انجام دهید و به صورت اتوماتیک کلماتی را به کاربر پیشنهاد بدهید. برای شروع کار شما باید یک AutoCompleteTextView را در layout خود قرار دهید کد xml قرار دادن این کنترل به شکل زیر است.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
<AutoCompleteTextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/autoText"/>

بعد از این کار باید در کد جاوا به این کنترل بگوییم که کلمات پیشنهادی را از کجا لود کند. برای مشخص کردن کلمات پیشنهادی برای این کنترل از adapter ها استفاده می کنیم. کار با adapter ها در لیس ویو در این ویدیو توضیح داده شده است. حال در این مطلب یک آرایه رشته ای تعریف می کنیم و از آن یک adapter می سازیم و آن Adapter را به کنترل اختصاص می دهیم. اگر بخواهیم به صورت برنامه نویسی توضیحات بالا را بیان کنیم باید کدی مانند کد زیر بنویسیم.

AutoCompleteTextView autoText;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    autoText= (AutoCompleteTextView) findViewById(R.id.autoText);
    String[] languages=new String[]{"java","C plus plus","python","ruby","php","visual basic","assembly"};
    ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,languages);
    autoText.setAdapter(adapter);
}

در کد بالا یک آرایه رشته ای به نام languages تعریف شده است و بعد از آن یک adapter تعریف شده است و در انتها adapter تعریف شده به autoText که همان کنترل ما است اختصاص داده شده است. اگر شما این برنامه را اجرا کنید خواهید دید که مثلا با تایپ حروف ja کلمه java ظاهر خواهد شد و برای کلمات دیگر نیز به همین شکل است.مشکلی که در کد بالا وجود دارد این است که وقتی که یک کلمه نوشته می شود دیگر auto Complete برنامه کار نمی کند. خب دلیل این مشکل این است که AutoCompleteTextView برای یک کلمه پیشنهاد می دهد و قابلیت auto complete را دارا خواهد بود.

حال برای این که بتوانیم بعد از کلمه اول باز هم از قابلیت auto complete استفاده کنیم باید از کنترل دیگری به نام MultiAutoCompleteTextView استفاده کنیم. این کنترل دقیقا شبیه به همان کنترل قبل است با این تفاوت که می تواند در یک خط همه کلمات را پیشنهاد کند و قابلیت auto complete داشته باشد. تفاوتی که این کنترل با قبلی دارد باید از یک علامت به عنوان توکن برای آن استفاده کنیم که معمولا از , برای توکن استفاده می شود. توکن باعث جدا شدن کلمات مختلف در این کنترل خواهد بود. در کد زیر ما یک MultiAutoCompleteTextView ساخته ایم

MultiAutoCompleteTextView autoText;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    autoText= (MultiAutoCompleteTextView) findViewById(R.id.autoText);
    String[] languages=new String[]{"java","C plus plus","python","ruby","php","visual basic","assembly"};
    ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,languages);
    autoText.setAdapter(adapter);
    autoText.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
}

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

وب سایت توسینسو

ITPRO باشید

نویسنده: مهدی عادلی فر

منبع: Itpro

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.


مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات