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 {		List
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(); } } } }}

main.xml如下:



转载地址:https://it9527.blog.csdn.net/article/details/18901445 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android中AutoCompleteTextView完整示例(一)
下一篇:Filter(一)——设置SimpleAdapter的Filter从而过滤数据

发表评论

最新留言

初次前来,多多关照!
[***.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