Android中AutoCompleteTextView完整示例(二)
发布日期:2021-06-30 11:14:22
浏览次数:2
分类:技术文章
本文共 4147 字,大约阅读时间需要 13 分钟。
MainActivity如下:package cc.testautocompletetextview2;import android.os.Bundle;import android.app.Activity;/** * Demo描述 * 利用自定义AutoCompleteTextView完成邮箱自动补全功能 * * 参考资料: * 1 http://blog.csdn.net/fx_sky/article/details/9326129 * 2 http://blog.csdn.net/jwzhangjie/article/details/15771953 * 3 http://my.eoe.cn/eoe_haozi/archive/519.html * 4 http://gundumw100.iteye.com/blog/1056728 * Thank you very much */public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }}
AutoCompleteTextViewSubClass如下:
package cc.testautocompletetextview2;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.graphics.Color;import android.text.Editable;import android.text.TextWatcher;import android.util.AttributeSet;import android.view.View;import android.view.ViewGroup;import android.widget.AutoCompleteTextView;import android.widget.BaseAdapter;import android.widget.Filter;import android.widget.Filterable;import android.widget.TextView;public class AutoCompleteTextViewSubClass extends AutoCompleteTextView { //可补全的邮箱后缀 private static final String[] emailSuffix = { "@qq.com","@gmail.com", "@sina.com","@sohu.com"}; public AutoCompleteTextViewSubClass(Context context){ super(context); init(context); } public AutoCompleteTextViewSubClass(Context context, AttributeSet attrs) { super(context, attrs); init(context); } private void init(Context context){ final AutoCompleteTextViewAdatper adapter = new AutoCompleteTextViewAdatper(context); setAdapter(adapter); //设置阈值 //等同于布局文件中的 android:completionThreshold="2" //setThreshold(2); addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable editable) { String inputString = editable.toString(); System.out.println("--->输入的内容 inputString="+inputString); adapter.mList.clear(); if (inputString.length() > 0) { for (int i = 0; i < emailSuffix.length; ++i) { adapter.mList.add(inputString + emailSuffix[i]); } } adapter.notifyDataSetChanged(); showDropDown(); } @Override public void beforeTextChanged(CharSequence s, int start, int count,int after) { } @Override public void onTextChanged(CharSequence s, int start, int before,int count) { } }); } //定义AutoCompleteTextView的Adapter继承自BaseAdapter且实现Filterable接口 class AutoCompleteTextViewAdatper extends BaseAdapter implements Filterable { Listmain.xml如下:mList; private Context mContext; private FilterSubClass mFilter; public AutoCompleteTextViewAdatper(Context context) { mContext = context; mList = new ArrayList (); } @Override public int getCount() { return mList == null ? 0 : mList.size(); } @Override public Object getItem(int position) { return mList == null ? null : mList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { TextView textView = new TextView(mContext); textView.setTextColor(Color.RED); textView.setTextSize(30); convertView = textView; } TextView textView = (TextView) convertView; textView.setText(mList.get(position)); return textView; } @Override public Filter getFilter() { if (mFilter == null) { mFilter = new FilterSubClass(); } return mFilter; } // 只有满足setThreshold(2)这个阈值时才会执行performFiltering() private class FilterSubClass extends Filter { @Override protected FilterResults performFiltering(CharSequence constraint) { System.out.println("--->过滤 constraint=" + constraint.toString()); FilterResults results = new FilterResults(); if (mList == null) { mList = new ArrayList (); } results.values = mList; results.count = mList.size(); return results; } @Override protected void publishResults(CharSequence constraint, FilterResults results) { if (results.count > 0) { notifyDataSetChanged(); } else { notifyDataSetInvalidated(); } } } }}
转载地址:https://it9527.blog.csdn.net/article/details/18901445 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月07日 17时25分23秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
线程、事件与QObject
2019-04-30
树莓派4不连接显示器开机的方法
2019-04-30
[转]ffmpeg在vs2008中的使用
2019-04-30
[转]用"树莓派"打造一款智能音响(也许有点智障。。。)
2019-04-30
学习笔记(02):一学即懂的计算机视觉(第一季)-什么是视觉?
2019-04-30
学习笔记(03):一学即懂的计算机视觉(第一季)-第一个计算机视觉程序
2019-04-30
学习笔记(04):一学即懂的计算机视觉(第一季)-计算机视觉方向知识体系结构...
2019-04-30
学习笔记(05):一学即懂的计算机视觉(第一季)-学了视觉可以做什么
2019-04-30
学习笔记(06):一学即懂的计算机视觉(第一季)-有光即有世界:照明模型
2019-04-30
学习笔记(08):一学即懂的计算机视觉(第一季)-实战演练:颜色空间分解
2019-04-30
学习笔记(09):一学即懂的计算机视觉(第一季)-最浅显的卷积与滤波概念讲解!...
2019-04-30
学习笔记(10):一学即懂的计算机视觉(第一季)-图像平滑滤波与去噪
2019-04-30
学习笔记(11):一学即懂的计算机视觉(第一季)-数学形态学滤波
2019-04-30
学习笔记(12):一学即懂的计算机视觉(第一季)-实战演练:图像平滑滤波对比...
2019-04-30
学习笔记(14):一学即懂的计算机视觉(第一季)-Canny算子
2019-04-30
学习笔记(15):一学即懂的计算机视觉(第一季)-程序示例
2019-04-30
学习笔记(16):一学即懂的计算机视觉(第一季)-数学形态学扩展应用
2019-04-30
学习笔记(20):一学即懂的计算机视觉(第一季)-图像变换有什么用?
2019-04-30
学习笔记(21):一学即懂的计算机视觉(第一季)-灰度直方图
2019-04-30
学习笔记(22):一学即懂的计算机视觉(第一季)-霍夫变换
2019-04-30