اگر در هنگام تایپ کردن در یک فیلد قابل ویرایش تمایل دارید که پیشنهاداتی داشته باشید، می توانید آن را از طریق AutoCompleteTextView انجام دهید. این برنامه به طور خودکار پیشنهاداتی را به یوزر در حال تایپ ارائه می دهد. لیست پیشنهادات در یک منوی بالا به پایین ارائه می شود که یوزر می تواند یک آیتم را انتخاب کرده و آن را جایگزین محتوای در حال ویرایش کند.

برای استفاده از AutoCompleteTextView، شما باید ابتدا یک فیلدAutoCompletTextView در xml ایجاد کنید. ترکیب آن مانند زیر می باشد.

 

<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" >

 

پس از آن شما باید یک مرجع از این ویو متن در جاوا به دست آورید. ترکیب آن در زیر ارائه شده است .

 

private AutoCompleteTextView actv;
actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);

 

کار بعدی که لازم است انجام دهید تعیین لیست آیتم های پیشنهادی نمایش داده شده می باشد. شما می توانید آیتم های لیست را به عنوان یک ردیف رشته در جاوا یا رشته های xml مشخص کنید، که ترکیب آن در زیر ارائه شده است.

 

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);

 

گروه تطبیق دهنده ی ردیف، مسئول نمایش داده به عنوان لیست در جعبه ی پیشنهادات فیلد متن می باشد. روش setAdapter برای تنظیم تطبیق کننده ی autoCompleteTextView استفاده می شود. علاوه براین روش ها، روش های دیگری از AutoCompelte وجود دارند که در لیست زیر ارائه می شوند.

شماره متد و توضیحات
1 getAdapter()

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

2 getCompletionHint()

این روش متن انتخابی را بازمی گرداند که در پایین لیست تطبیقی نامیش داده می شود.

3 getDropDownAnchor()

این روش id مربوط به ویو را بازمی گرداند که لیست بالا به پایین auto complete به آن ثابت شده است.

4 getListSelection()

این روش موقعیت انتخاب ویوی بالا به پایین را، اگر وجود داشته باشد، بازمی گرداند.

5 isPopupShowing()

این روش تعیین می کند که آیا منوی پاپ آپ در حال نمایش است یا نه.

6 setText(CharSequence text, boolean filter)

این روش متن را تنظیم می کند، به جز آن متنی که فیلترینگ را غیرفعال می کند.

7 showDropDown() این روش بالا به پایین را روی صفحه نمایش می دهد.

مثال

مثال زیر استفاده از گروه AutoCompleteTextView را توضیح می دهد. این گروه یک برنامه ی پایه ایجاد می کند که به شما اجازه می دهد تا در آن تایپ کنید و پیشنهادها را روی دستگاه شما نشان می دهد.

برای آزمایش با این مثال لازم است آن را روی یک دستگاه واقعی یا یک مقلد اجرا کنید.

مرحله توضیحات
1 برای ایجاد یک برنامه ی اندروید ازشما از Eclipse IDE برای ایجاد یک برنامه ی اندروید استفاده خواهید کرد و آن را با عنوان AutoComplete تحت پکیج com.example.autocomplete نام گذاری می کنید.
2 فایل src/MainActivity.java را تغییر دهید تا کد AutoCompleteTextView را اضافه کنید.
3 لی اوت فایللی اوت فایل XML (res/layout/activity_main.xml) را تغییر دهید و اگر لازم است مولفه GUI را اضافه کنید.
4 فایل res/values/string.xml را تغییر دهید و مولفه های رشته ی لازم را اضافه کنید.
5 AndroidManifest.xml را تغییر دهید تا دستورات لازم را اضافه کنید.
6 برنامه را اجرا کنید و یک دستگاه اندروید اجرایی را انتحاب کنید و برنامه را روی آن نصب کنید و نتایج را بررسی کنید.

 

در اینجا محتوای src/com.example.autocomplete/MainActivity.java را مشاهده می کنید.

 

package com.example.sairamkrishna.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 را مشاهده می کنید.

 

<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="Tutorialspoint"
      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 را مشاهده می کنید.

 

<resources>
   <string name="app_name">My Application</string>
</resources>

 

در اینجا محتوای AndroidManifest.xml را مشاهده می کنید.

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >

   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.sairamkrishna.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>

 

اجازه دهید برنامه ی مدیریت اندروید شما را اجرا کنیم. فرض می کنیم که در هنگام انجام تنظیمات محیط، AVD خود را متصل کرده اید. برای اجرای برنامه از Eclipse، یکی از فایل های فعالیت برنامه ی خود را باز کنید و روی آیکن RunEclipse Run Icon در تولبار کلیک کنید. Eclipse این برنامه را روی AVD شما نصب خواهد کرد و AVD شما صفحه ی زیر را نمایش خواهد داد.

Anroid Capture Tutorial

حالا فقط روی تکست ویو تایپ کنید تا پیشنهادات را ببینید. به عنوان مثال به محض اینکه من دو حرف ca را تایپ کردم در پیشنهادات لغت Canada ارائه شد.

Anroid Capture Tutorial

multiAutoCompleteTextView پیشنهاداتی را نه تنها برای یک کلمه بلکه برای کل یک متن ارائه می دهد. پس از نوشتن اولین لغت، زمانی که شروع به نوشتن دومین لغت کردم، پیشنهاداتی را به من نمایش داد که در تصویر زیر می بینید.

Anroid Capture Tutorial