آموزش استفاده از AutoCompleteTextView در برنامه نویسی اندروید
سلام دوستان عزیز در این سری از آموزش های برنامه نویسی به آموزش استفاده از AutoCompleteTextView در برنامه نویسی اندروید می پردازیم شاید پرسید AutoCompleteTextView چیست ؟ شاید در کافه بازار دیده باشید وقتی می خواهید سرچ کنید وقتی اولین یا دومین کلمه را که وارد می کنید یک list از جستجو ها زیر آن برای شما نمایش داده می شود همانند عکس زیر
همانطور که می بینید یک لیست با وارد کردن چند کلمه نمایان شده است به سراغ کد برنامه میرویم
1 2 3 4 5 6 7 8 | <AutoCompleteTextView android:id="@+id/autoCompleteTextView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="65dp" android:ems="10" > |
در بالا یک object از نوع AutoCompleteTextView داریم که ویژگی های زیر را دارد.
یک android:id که یک ایدی منحصر بفرد است.
android:layout_width فاصله عمودی که برابر با wrap_Content است.
android:layout_height فاصله افقی برابر با wrap_content است.
android:layout_alignParentTop یعنی با بالا عمود شده باشد.
android:layout_centerHorizontal این هم سبب وسطچین شدن و عمودی شدن می شود.
و در آخر em اندازه متن را تنظیم می کند.
سپس یک شئی از آن را پیدا می کنیم (FindViewbyid)
1 2 | private AutoCompleteTextView actv; actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); |
و برای اینکه لیست زیر آن را درست کنیم باید همانند زیر عمل کنیم
1 2 3 4 | String[] countries = getResources().getStringArray(R.array.list_of_countries); ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,android.R.layout.simple_list_item_1,countries); actv.setAdapter(adapter); |
برای اینکار یک آرایه از نوع رشته (string) درست می کنیم و و در آن لیست کشور ها را میریزیم و یک اداپتور آرایه ایجاد می کنیم و آن را ست می کنیم.
حال اگر نام یک کشور مثل ایران البته به انگلیسی وارد کنید کافی است یک تا دو کلمه را وارد کنید تا در لیست نمایان شود.
حال به یک مثال کاربردی تر می پردازیم
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <AutoCompleteTextView android:id="@+id/autoCompleteTextView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:layout_marginTop="72dp" android:hint="AutoComplete TextView"> <requestFocus /> </AutoCompleteTextView> <MultiAutoCompleteTextView android:id="@+id/multiAutoCompleteTextView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:layout_below="@+id/autoCompleteTextView1" android:layout_alignLeft="@+id/autoCompleteTextView1" android:layout_alignStart="@+id/autoCompleteTextView1" android:hint="Multi Auto Complete " /> </RelativeLayout> |
در بالا ما دو نوع object داریم اولی AutoCompleteTextView و دومی MultiAutoCompleteTextView
شاید بپرسید فرق بین AutoCompleteTextView و MultiAutoCompleteTextView در چیست ؟
در AutoCompleteTextView شما باید کل کلمه را بنویسید تا لیست برای شما نمایش داده بشود به طور مثال اگ چند کلمه داشته باشیم که با حرف الف شروع شده باشند ممکن است تنها یکی از آن نمایش داده شود ولی در MultiAutoCompleteTextView فقط با نوشتن یک کمله تمامی عبارت هایی که با آن کلمه شروع یا پایان یافته اند در لیست نمایش داده خواهند شد و ویژگی دیگر آن این است که شما می توانید چند کلمه بنویسید به طور مثال یک بار بنویسید java سپس فاصله دهید و بنویسید C# زمانی که کلمه دوم را دارید می نویسید باز هم لیست برای شما نمایش داده خواهد شد .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import android.app.Activity; import android.content.Context; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.MultiAutoCompleteTextView; import android.widget.Toast; import java.io.IOException; public class MainActivity extends Activity { AutoCompleteTextView text; MultiAutoCompleteTextView text1; String[] languages={"C++","C#","Android ","java","IOS","SQL","JDBC","Web services"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1); text1=(MultiAutoCompleteTextView)findViewById(R.id.multiAutoCompleteTextView1); ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,languages); text.setAdapter(adapter); text.setThreshold(1); text1.setAdapter(adapter); text1.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); } } |
در مثال بالا همانند مثال قبل عمل کردیم فقط به جای لیست کشور ما یک لیست به صورت سفارشی درست کردیم تمامی کد های بالا همان کد های قبلی است به جز خط پایین
1 | text1.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); |
این می گوید که هر وقت کلمه ای نوشته شد و بعد از آن کاما ” , ” آمد دوباره اگر کاربر چیزی نوشت لیست برای او نمایش داده شود.
این آموزش هم مانند آموزش های دیگر به پایان رسید امیدوارم مفید بود باشد
عالی بود
سلام
من کلمه های که توی لیستم دارم دو کلمه ای هست یعنی نام و نام خانوادگی من از این روش که گفتید استفاده کردم نام و نام خانوادگی که پیشنهاد میده کلیک میکنیم که تو تکس باکس قرار بگیره فقط نام اون نفر ثبت میشه اگر کلمه دیگری که دنبالش باشه توی تکس باکس ست نمیشه چکار باید کرد که کل متن نام و نام خانوادگی توی تکس باکس قرار بگیره ؟؟
مرسی