Hướng dẫn học lập trình Android
- Những điều kiện cần thiết và bắt buộc để học lập trình Android
- Hướng dẫn tải và cài đặt Android Studio
- Cài đặt và sử dụng máy ảo Genymotion bản mới nhất
- Tìm hiểu các thành phần của một ứng dụng Android
- Cách tạo một Android Project trong Android Studio
- Tìm hiểu về các Layout trong Android
- Các thành phần tương tác trong giao diện của ứng dụng – UI Controls
- Xử lý sự kiện trong Android
- Toast và Alert Dialog trong ứng dụng Android
- Hướng dẫn Custom Toast trong Android
- Sử dụng AutocompleteTextView và MultiAutocompleteTextView trong Android
- Hướng dẫn Custom Dialog sử dụng XML Layout trong Android
- Hướng dẫn sử dụng ListView trong Android
- Custom ListView trong Android với ImageView và TextView
- Parse Json sử dụng thư viện Retrofit
- Tạo context menu trong Android – ActionBar ActionMode.CallBack Example
- Hướng dẫn sử dụng thư viện Volley trong Android
- HIển thị Location Setting Dialog sử dụng Google API Client
- Chức năng tìm kiếm trực tiếp trên ListView Android
- Tạo Web Service bằng PHP và MYSQL cho ứng dụng di động – Part 1
- Tạo Web Service bằng PHP và MYSQL cho ứng dụng di động – Part 2
AutoCompleteTextView và MultiAutocompleteTextView trong Android đều hỗ trợ cho người dùng những gợi ý liên quan khi bạn nhập vào trường EditText. Những gợi ý đó sẽ được hiển thị trong một menu thả xuống từ đó người dùng có thể chọn một item để thay thế cho nội dung của mình vừa nhập vào. Nhưng bạn đã phân biệt được sự khác nhau giữa AutoCompleteTextView và MultiAutocompleteTextView chưa? Hãy xem qua sự khác nhau dưới đây.
Khi sử dụng AutocompleteTextView nó sẽ hiển thị danh sách các gợi ý liên quan và bạn chỉ chọn được 1 gợi ý duy nhất từ danh sách đó. Còn khi sử dụng MultiAutocompleteTextView nó cũng đưa ra các gợi ý liên quan nhưng bạn có thể chọn được nhiều hơn từ danh sách hiển thị, các gợi ý này sẽ được phân cách bởi dấu phẩy. Bạn có thể xem qua ví dụ này để hiểu thêm.
Trong ví dụ trên mình sử dụng Autocomplete cho trường nhập vào Ngôn ngữ lập trình chính và sử dụng MultiAutocomplete cho trường nhập vào Ngôn ngữ lập trình bạn có thể biết, qua đó bạn có thể thấy rõ được sự khác nhau giữa AutoCompleteTextView và MultiAutocompleteTextView.
Một số phương thức trong AutoCompleteTextView:
- getAdapter() : Phương thức này trả về một Listadapter có thể lọc được được sử dụng cho Autocomplete.
- getCompletionHint() : Phương thức này trả về văn bản gợi ý tùy ý được hiển thị ở dưới danh sách kết nối.
- getDropDownAnchor() : Phương thức này trả về view id mà danh sách dropdown được neo tới.
- getListSelection() : Phương thức này trả về ị trí của lựa chọn, nếu có một.
- isPopupShowing() : This method indicates whether the popup menu is showing.
- setText(CharSequence text, boolean filter) : Phương thức này thiết lập văn bản ngoại trừ việc nó có thể vô hiệu hóa bộ lọc.
- showDropDown() : Phương thức này hiển thị dropdown trên màn hình.
Xem code tham khảo:
Cấu trúc XML của giao diện 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 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Họ tên" /> <EditText android:id="@+id/edHoTen" android:layout_width="match_parent" android:layout_height="wrap_content"> <requestFocus /> </EditText> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_below="@+id/editText" android:text="Ngôn ngữ lập trình chính" /> <AutoCompleteTextView android:id="@+id/atPrimaryLanguage" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/textView3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Ngôn ngữ bạn có thể biết" /> <MultiAutoCompleteTextView android:id="@+id/mtSecondLanguage" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/btnSubmit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="30dp" android:text="Submit" /> </LinearLayout> |
Class xử lý 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 52 53 54 55 56 57 58 59 60 61 62 63 64 |
package dev4u.com.autocompletetextviewdemo; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.EditText; import android.widget.MultiAutoCompleteTextView; import android.widget.Toast; public class MainActivity extends Activity { private EditText edHoTen; private AutoCompleteTextView atPrimaryLanguage; private MultiAutoCompleteTextView mtSecondLanguage; private Button btnSubmit; private String[] primaryLanguage = {"Java", "CSharp", "JavaScript", "Swift", "C/C++"}; private String[] secondLanguage = {"Java", "CSharp", "JavaScript", "Swift", "C/C++"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edHoTen = (EditText) findViewById(R.id.edHoTen); atPrimaryLanguage = (AutoCompleteTextView) findViewById(R.id.atPrimaryLanguage); mtSecondLanguage = (MultiAutoCompleteTextView) findViewById(R.id.mtSecondLanguage); btnSubmit = (Button) findViewById(R.id.btnSubmit); ArrayAdapter adapterPrimaryLanguage = new ArrayAdapter(this, android.R.layout.simple_list_item_1, primaryLanguage); atPrimaryLanguage.setAdapter(adapterPrimaryLanguage); // Sét đặt số ký tự nhỏ nhất, để cửa sổ gợi ý hiển thị atPrimaryLanguage.setThreshold(1); ArrayAdapter adapterSecondLanguage = new ArrayAdapter(this, android.R.layout.simple_list_item_1, secondLanguage); mtSecondLanguage.setAdapter(adapterSecondLanguage); // Sét đặt số ký tự nhỏ nhất, để cửa sổ gợi ý hiển thị mtSecondLanguage.setThreshold(1); // Các đoạn text ngăn cách nhau bởi dấu phẩy. mtSecondLanguage.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); btnSubmit.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { submitForm(); } }); } private void submitForm() { String text = "Họ tên: " + this.edHoTen.getText().toString() + "\nNgôn LT ngữ chính: " + this.atPrimaryLanguage.getText().toString() + "\nNgôn LT ngữ phụ: " + this.mtSecondLanguage.getText().toString(); Toast.makeText(this, text, Toast.LENGTH_LONG).show(); } } |
Các bạn chú ý ở 2 dòng này :
atPrimaryLanguage.setThreshold(1); và mtSecondLanguage.setThreshold(1);
Ý nghĩa của nó là thiết lập số ký tự bắt đầu lọc trong AutoComplete. Ở đây mình nhập là số 1 tức là chỉ cần 1 ký tự là nó bắt đầu lọc, còn nếu như bạn sửa thành 3 thì bạn nhập tới 3 ký tự vào nó mới bắt đầu lọc.
Lời kết
Qua ví dụ nhỏ trên chắc bạn cũng đã hiểu sơ qua về cách sử dụng AutocompleteTextView trong Android và MultiAutocompleteTextView trong Android như thế nào cũng như phân biệt được sự khác nhau giữa AutoCompleteTextView và MultiAutocompleteTextView, nếu có bất kỳ góp ý hay chia sẻ gì, mong bạn có thể để lại comment bên dưới hoặc gửi mail về [email protected]. Xin cảm ơn!!