[分享] 下拉式選單補齊email
其實就是edit有下拉式選單,會把項目設成
比如輸入aaa
選項會是
aaa@gmail.com
aaa@yahoo.com
aaa@hotmail.com
在google了一個下午之後,找到做法。
基本上用android的原生AutoCompleteTextView物件。
AutoCompleteTextView + ArrayAdapter可以實現
秀出符合輸入字串的ArrayAdapter的內容。
不過這不是我想要的,因為aaa這個字串是動態的。
所以使用找到的一個方法,使用ArrayAdapter implements Filterable
可以修改由輸入的內容(aaa),態動決定輸出的內容。以下程式碼只是個範例
,Filter轉換的方法,自行撰寫。
class MyArrayList extends ArrayAdapter<String> implements Filterable {
Filter mFilter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence arg0) {
// 這裡return的FilterResults會傳到publishResults
// arg0 是目前輸入的字串,沒有時會是null
return null;
}
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
clear();
add(constraint + "@gmail.com");
add(constraint + "@hotmail.com");
add(constraint + "@yahoo.com");
notifyDataSetChanged();
}
}
@Override
public Filter getFilter() {
return mFilter;
}
}
還有AutoCompleteTextView用到PopWindows
所以不可以在atach to Windows之前產生PopWidnows,不然會有exception
像我用在fragment中,在onCreateView時產生PopWindows就會出現,所以
我把AutoCompleteTextView的setAdpater(),這個動作,移到以下函式中
去作,就沒事。
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
setAdapter(new MyArrayList(mContext));
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.241.128.198
※ 編輯: tsaiminghan 來自: 111.241.128.198 (12/26 23:10)
※ 編輯: tsaiminghan 來自: 111.241.128.198 (12/26 23:12)
※ 編輯: tsaiminghan 來自: 111.241.128.198 (12/26 23:13)
※ 編輯: tsaiminghan 來自: 111.241.128.198 (12/26 23:18)
推
12/27 00:09, , 1F
12/27 00:09, 1F