作者tsaiminghan (nahgnimiast)
看板AndroidDev
标题[分享] 下拉式选单补齐email
时间Wed Dec 26 23:09:07 2012
其实就是edit有下拉式选单,会把项目设成
比如输入aaa
选项会是
[email protected]
[email protected]
[email protected]
在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)
1F:推 Y78:跟我今天在研究的东西有点类似XD 推一个 12/27 00:09