خاصية الإكمال التلقائي – إنشاء حقل نصي يقوم بإقتراح الكلمات أثناء الكتابة

السلام عليكم ورحمة الله وبركاته

خاصية الإكمال التلقائي من الخواص الجميلة في الأندرويد، ومفيدة جداً للمستخدمين حيث توفر لهم سهولة الوصول وماهي الخيارات المتاحة، ومفيدة أيضاً لك انت كمطور بحيث تضمن أن المستخدم سوف يدخل البيانات المقترحة فقط. من أمثلة إستخدام هذه الخاصية (مربع البحث في محرك قوقل، وبحث فيسبوك، وأيضا ياهو،..إلخ)، بل لا تختصر على محركات البحث فقط، فيمكن إستخدامها في نمازج إدخال البيانات -(حقل المدن، الأقطار،..إلخ)- كما سنرى بعد قليل .

سوف نقوم بعمل تطبيق بسيط نوضح فيه جميع الخطوات وكيفة إستخدام هذه الخاصية، بالتطبيق على حقل يقوم بالإكمال التلقائي لبعض أسماء الدول العربية، تابع معي..

سنستخدم في هذا التطبيق أداة AutoCompleteTextView و كلاس ArrayAdapter.

بسم الله نبدأ :

أولا : قم بإنشاء مشروع جديد بإسم AutoComplete او بالإسم الذي يروق لك، أنا بإنتظارك..

ثانياً : في مسار Layout قم بإنشاء ملف جديد بإسم list_item.xml يحتوي على الأتي:

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16sp"
    android:textColor="#000">
</TextView>

هذا الملف يحتوي فقط على TextView لعرض الكلمات المقترحة.

ثالثاً : أفتح ملف main.axml ستجده في المسار Resources\layout\main.axml واستبدل محتواه بالتالي:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:padding="5dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Country" />
    <AutoCompleteTextView android:id="@+id/autocomplete_country"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"/>
</LinearLayout>

كما نلاحظ استخدمنا اداة AutoCompleteTextView وال id الخاص بها "autocomplete_country"سنحتاجه لاحقاً.

رابعاً : أفتح ملف MainActivity.cs تجده في المسار الرئيسي للمشروع، وادخل هذه الأسطر في دالة OnCreate().

AutoCompleteTextView arab = FindViewById<AutoCompleteTextView> (Resource.Id.autocomplete_country);
var adapter = new ArrayAdapter<String> (this, Resource.Layout.list_item, arab_country);
textView.Adapter = adapter;

لنشرح ماذا تعني هذه الأسطر:

السطر الأول قد يكون واضح للكثير قمنا بإنشاء كائن او instance من كلاس AutoCompleteTextView بإسم arab و وقمنا بربطه بأداة AutoCompleteTextView التي بملف main.axml عبر ال id الذي ذكرناه سابقاً “autocomplete_country” وكالمعتاد يكون مساره كالآتي Resource.Id.autocomplete_country.
والسطر الثاني قمنا بإنشاء instance من كلاس ArrayAdapter واسندنا إليه list_item كما اشرنا سابقا إن كلاس ArrayAdapter يتولى مهمة عرض الكلمات المقترحة في ListView التي ضمن ملف list_item.
وماذا نقصد arab_country !؟ تابع الخطوة الخامسة لتكتشف ذلك.

خامساً: داخل ملف MainActivity.cs قم بإنشاء مصفوفة بإسم arab_country من نوع string وأدخل كل الكلمات التي تحب أن توفرها لمستخدمي تطبيقك، أما هنا كما ذكرنا أن سيكون هذا التطبيق البسيط حول بعض الدول العربية.

static string[] arab_country = new string[] { 
 "Saudi Arabia", "Egypt", "Algeria", "Qater", 
"Sudan","Omman", "Dubai","Yammen","Iraq"
}

بعد الخطوة الرابعة والخامسة يفترض ملف MainActivity.cs يكون كالتالي

public calss AutoComplete : Activity
{

static string[] arab_country = new string[]{ "Saudi Arabia", "Egypt", "Algeria", "Qater","Sudan","Omman", "Dubai","Yammen","Iraq"}
    
     protected override void OnCreate (Bundle bundle) {  
         base.OnCreate (bundle);   
         // Set our view from the "Main" layout resource  
         SetContentView (Resource.Layout.Main); 
  
         AutoCompleteTextView arab = FindViewById<AutoCompleteTextView>(Resource.Id.autocomplete_country);  
         var adapter = new ArrayAdapter<String>(this, Resource.Layout.list_item, arab_country);  
         arab.Adapter = adapter;
    }
}

هذه ليست كل الدول العربية بالتأكيد، لكن هذا فقط للتوضيح 🙂

سادساً : قم بتشغيل التطبيق.

 

ملاحظة: 
إستخدام مصفوفة string لحفظ الكلمات المقترحة داخل ملف MainActivity.cs يعتير
 غير مناسب في حالة البيانات الكبيرة، إذا كانت كلماتك تتجاوز العشرون
 إطلع لطريقة الإكمال التلقائي بصورة أكثر كفاءة. 

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *