การทำ Auto Complete ด้วย AutoCompleteTextView
สามารถกำหนด resource สำหรับใช้ทำ auto-complete ได้ทั้งใน source code และใน resource file
- กำหนด resource สำหรับใช้เป็น auto-complete ใน source code
- กำหนด resource สำหรับใช้เป็น auto-complete ใน resource file
1.กำหนด resource สำหรับใช้เป็น auto-complete ใน source code
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="30dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"> <AutoCompleteTextView android:id="@+id/autoCompleteTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="top" android:imeOptions="actionGo" android:inputType="text" /> </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>
บรรทัดที่ 25-26 : ต้องกำหนด inputType=”text”
ด้วย imeOptions=”actionGo”
ถึงจะใช้ได้
MainActivity.java
package com.phaisarn.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.KeyEvent; import android.view.inputmethod.EditorInfo; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String[] items = {"Australia", "Austria", "Argentina", "Thailand", "Taiwan", "Turkey"}; ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, items); final AutoCompleteTextView autoCompleteTextView = findViewById(R.id.autoCompleteTextView); autoCompleteTextView.setAdapter(arrayAdapter); autoCompleteTextView.setThreshold(1); autoCompleteTextView.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_GO) { Toast.makeText(getBaseContext(), autoCompleteTextView.getText(), Toast.LENGTH_SHORT).show(); return true; } return false; } }); } }
บรรทัดที่ 20 : กำหนด resource ที่จะใช้เป็น auto-complete
2.กำหนด resource สำหรับใช้เป็น auto-complete ใน resource file
ข้อมูลที่จะใช้ทำ auto complete กำหนดไว้ในไฟล์ strings.xml แล้วแก้ไขโค๊ดที่ MainActivity.java เพียง 1 บรรทัด
res/values/strings.xml
<resources> <string name="app_name">My Application</string> <string-array name="countries_array"> <item>Afghanistan</item> <item>Albania</item> <item>Algeria</item> <item>American Samoa</item> <item>Andorra</item> <item>Angola</item> <item>Anguilla</item> <item>Antarctica</item> </string-array> </resources>
MainActivity.java
package com.phaisarn.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.KeyEvent; import android.view.inputmethod.EditorInfo; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String[] items = getResources().getStringArray(R.array.countries_array); ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, items); final AutoCompleteTextView autoCompleteTextView = findViewById(R.id.autoCompleteTextView); autoCompleteTextView.setAdapter(arrayAdapter); autoCompleteTextView.setThreshold(1); autoCompleteTextView.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_GO) { Toast.makeText(getBaseContext(), autoCompleteTextView.getText(), Toast.LENGTH_SHORT).show(); return true; } return false; } }); } }
บรรทัดที่ 20 : เรียกใช้ resource จากไฟล์ res/values/strings.xml
Link