با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش برنامه نویسی اندروید را دنبال می کنند. یکی از قابلیت هایی که در بسیاری از وب سایت ها و نرم افزارهای مختلف اندروید در هنگام دریافت ورودی از کاربر ارائه می شود قابلیت Auto Complete (تکمیل خودکار) است که وقتی کاربر در فیلد متن ورودی شروع به تایپ می کند عبارتی که با آن حروف شروع می شوند برای تکمیل ورودی پیشنهاد می شود، که در روند تسریع دریافت ورودی از کاربر تاثیر بسیاری دارد. که این ویژگی با استفاده از قابلیت Auto Complete در اندروید پیاده سازی می شود، حالا در ادامه مباحث این آموزش برای آشنایی با چگونگی استفاده از قابلیت تکمیل خودکار متن در اندروید با ما همراه باشید.
در ادامه ی به آموزش ساختار پیاده سازی تکمیل خودکار متن در اندروید و یک مثال ساده از آن می پردازیم.
در این آموزش ما چگونگی ایجاد یک AutoCompleteTextView را به شما آموزش می دهیم.
برای استفاده از AutoCompleteTextView ابتدا یک فیلد AutoCompletTextView در xml ایجاد کنید.
ساختار آن به صورت زیر است:
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" > |
پس از آن، شما باید یک مرجع از این textview در جاوا دریافت کنید که ساختار آن در زیر آمده است:
1 2 | private AutoCompleteTextView actv; actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); |
حالا چیزی که بعدا باید انجام دهید این است که فهرست آیتم های پیشنهاد شده را نمایش دهید.
شما می توانید آیتم های لیست را به عنوان آرایه رشته در java یا در strings.xml مشخص کنید که ساختار آن در زیر آمده است:
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); |
کلاس آداپتور آرایه مسئول نمایش داده ها به عنوان لیست در جعبه پیشنهادات text field است.
متد setAdapter برای تنظیم آداپتور AutoCompleteTextView استفاده می شود.
به غیر از این متد ها، متد های دیگر Auto Complete در زیر ارائه شده است:
ردیف | متد و توضیحات مربوطه |
---|---|
۱ | getAdapter() این متد لیست قابل فیلتر را برای ایجاد Auto Complete برمی گراند. |
۲ | getCompletionHint() این متد متنی را که در پایین لیست تطبیق نمایش داده شده را نمایش می دهد. |
۳ | getDropDownAnchor() این متد id را برای نمایش لیست تکمیل خودکار متن باز می گرداند. |
۴ | getListSelection() این متد موقعیت قرارگیری لیست کلمات پیشنهادی را برمی گرداند. |
۵ | isPopupShowing() این متد نشان می دهد که آیا منوی پنجره نمایش داده می شود. |
۶ | setText(CharSequence text, boolean filter) این متد متن را به جز اینکه می تواند فیلتر را غیرفعال کند، تنظیم می کند. |
۷ | showDropDown() این متد لیست drop down را روی صفحه نمایش می دهد. |
مثال ساده ی زیر چگونگی استفاده از قابلیت های کلاس AutoCompleteTextView را نشان می دهد.
نکته: برای تست این مثال باید از یک دستگاه اندروید واقعی استفاده کنید.
مراحل | توضیحات |
---|---|
۱ | مراحل ایجاد برنامه در اندروید استدیو را طبق بخش های قبلی دنبال کرده و نام پکیج را com.pvlearn.myapplication قرار بدهید. |
۲ | به محتوای فایل src/MainActivity.java کد لازم برای AutoCompleteTextView را اضافه کنید. |
۳ | رابط کاربری مناسب AutoCompleteTextView را به محتوای فایل res/layout/activity_main.xml اضافه کنید. |
۴ | برنامه را اجرا کنید تا شبیه ساز اندروید نتیجه را نمایش دهد. |
محتوای فایل src/MainActivity.java :
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 39 40 41 42 43 44 45 46 47 48 49 50 51 | package com.example.Pvlearn.myapplication; 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={"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()); } } |
محتوای فایل activity_main.xml:
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | <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"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Android Auto Complete" android:id="@+id/textView" android:textSize="30dp" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pvlearn" android:id="@+id/textView2" android:textColor="#ff3eff0f" android:textSize="35dp" android:layout_below="@+id/textView" android:layout_centerHorizontal="true" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:src="@drawable/logo" android:layout_below="@+id/textView2" android:layout_alignLeft="@+id/textView2" android:layout_alignStart="@+id/textView2" android:layout_alignRight="@+id/textView2" android:layout_alignEnd="@+id/textView2" /> <AutoCompleteTextView android:id="@+id/autoCompleteTextView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:layout_below="@+id/imageView" android:layout_alignLeft="@+id/imageView" android:layout_alignStart="@+id/imageView" 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> |
محتوای فایل Strings.xml:
1 2 3 | <resources> <string name="app_name">My Application</string> </resources> |
محتوای فایل AndroidManifest.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.Pvlearn.myapplication" > <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.Pvlearn.myapplication.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> |
برای اجرای برنامه ی اندرویدی خود یکی از فایل های activity در برنامه ی خود کلیک کنید.
سپس روی نماد (Run) از نوار ابزار برای شروع اجرای برنامه کلیک کنید.
سپس نتیجه اجرای برنامه را در شبیه ساز یا دستگاه اندروید خود مشابه زیر مشاهده خواهید کرد:
حالا برای نمونه یک حرف را در فیلد ورودی تایپ می کنیم تا لیست های پیشنهادی را مشاهده کنید.
multiAutoCompleteTextView پیشنهادات نه تنها برای یک کلمه بلکه برای متن کامل را نشان می دهد.
پس از نوشتن کلمه ی اول، هنگام شروع کلمه ی دوم لیست پیشنهادی ظاهر می شود.
قابلیت Auto Complete در اندروید سرعت وارد کردن متن در فیلدهای text را برای کاربران بسیار بالا می برند و همچنین کار کاربران را ساده تر می کنند، از این رو این ویژگی از اهمیت بالایی برخوردار بوده و ما مباحث این آموزش را به بررسی تکمیل خودکار متن در اندروید اختصاص دادیم.
در بخش بعدی به بررسی بهترین شیوه ها در اندروید می پردازیم.