Bagikan melalui


Lengkapi Otomatis untuk Xamarin.Android

AutoCompleteTextView adalah elemen tampilan teks yang dapat diedit yang menunjukkan saran penyelesaian secara otomatis saat pengguna mengetik. Daftar saran ditampilkan di menu drop-down tempat pengguna dapat memilih item untuk mengganti konten kotak edit.

Example of Auto Complete

Gambaran Umum

Untuk membuat widget entri teks yang menyediakan saran lengkapi otomatis, gunakan AutoCompleteTextView Widget. Saran diterima dari kumpulan string yang terkait dengan widget melalui ArrayAdapter.

Dalam tutorial ini, Anda akan membuat AutoCompleteTextView widget yang memberikan saran untuk nama negara.

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

TextView adalah label yang memperkenalkanAutoCompleteTextView Widget.

Tutorial

Mulai proyek baru bernama HelloAutoComplete.

Buat file XML bernama list_item.xml dan simpan di dalam folder Sumber Daya/Tata Letak . Atur Tindakan Build file ini ke AndroidResource. Edit file agar terlihat seperti ini:

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

File ini mendefinisikan sederhana TextView yang akan digunakan untuk setiap item yang muncul dalam daftar saran.

Buka Sumber Daya/Tata Letak/Main.axml dan sisipkan yang berikut ini:

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

Buka MainActivity.cs dan sisipkan kode berikut untuk OnCreate() Metode:

protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);

    // Set our view from the "Main" layout resource
    SetContentView (Resource.Layout.Main);

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

    textView.Adapter = adapter;
}

Setelah tampilan konten diatur ke main.xml tata letak, AutoCompleteTextView widget diambil dari tata letak dengan FindViewById. ArrayAdapter Baru kemudian diinisialisasi untuk mengikat list_item.xml tata letak ke setiap item daftar dalam COUNTRIES array string (ditentukan pada langkah berikutnya). Akhirnya, SetAdapter() dipanggil untuk mengaitkan ArrayAdapter dengan AutoCompleteTextView widget sehingga array string akan mengisi daftar saran.

MainActivity Di dalam kelas, tambahkan array string:

static string[] COUNTRIES = new string[] {
  "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
  "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
  "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
  "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
  "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
  "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory",
  "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi",
  "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
  "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
  "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
  "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
  "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
  "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
  "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
  "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
  "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
  "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
  "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
  "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
  "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
  "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
  "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
  "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
  "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
  "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
  "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
  "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
  "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
  "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
  "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
  "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
  "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
  "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
  "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
  "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
  "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
  "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
  "Ukraine", "United Arab Emirates", "United Kingdom",
  "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
  "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
  "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
};

Ini adalah daftar saran yang akan disediakan dalam daftar drop-down saat pengguna mengetik AutoCompleteTextView Widget.

Jalankan aplikasi lagi. Saat Anda mengetik, Anda akan melihat sesuatu seperti ini:

Example auto-complete screenshot listing names that contain

Informasi Selengkapnya

Perhatikan bahwa menggunakan array string yang dikodekan secara permanen bukanlah praktik desain yang direkomendasikan karena kode aplikasi Anda harus fokus pada perilaku, bukan konten. Konten aplikasi seperti string harus diekternetisasi dari kode untuk membuat modifikasi pada konten lebih mudah dan memfasilitasi pelokalan konten. String yang dikodekan secara permanen digunakan dalam tutorial ini hanya untuk membuatnya sederhana dan fokus pada AutoCompleteTextView Widget. Sebagai gantinya, aplikasi Anda harus mendeklarasikan array string tersebut dalam file XML. Ini dapat dilakukan dengan <string-array> sumber daya dalam file proyek res/values/strings.xml Anda. Contohnya:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="countries_array">
        <item>Bahrain</item>
        <item>Bangladesh</item>
        <item>Barbados</item>
        <item>Belarus</item>
        <item>Belgium</item>
        <item>Belize</item>
        <item>Benin</item>
    </string-array>
</resources>

Untuk menggunakan string sumber daya ini untuk ArrayAdapter, ganti yang asli ArrayAdapter baris konstruktor dengan yang berikut:

string[] countries = Resources.GetStringArray (Resource.array.countries_array);
var adapter = new ArrayAdapter<String> (this, Resource.layout.list_item, countries);

Referensi

Bagian halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Proyek Sumber Terbuka Android dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Atribusi Creative Commons 2.5. Tutorial ini didasarkan pada tutorial Lengkapi Otomatis Android*.