博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android小知识之邮箱地址输入自动完成
阅读量:5347 次
发布时间:2019-06-15

本文共 5360 字,大约阅读时间需要 17 分钟。

虽然不难,但是容易忘记,做个备忘吧

package com.guet.zhuge;  import android.app.Activity;import android.os.Bundle;import android.text.Editable;import android.text.TextWatcher;import android.widget.AutoCompleteTextView;  public class MainActivity extends Activity implements TextWatcher{          private AutoCompleteTextView autoview;        private AutoTextViewAdapter adapter;                  private static final String[] AUTO_EMAILS = {"@163.com", "@sina.com", "@qq.com", "@126.com", "@gmail.com", "@apple.com"};                  @Override        protected void onCreate(Bundle savedInstanceState) {                super.onCreate(savedInstanceState);                setContentView(R.layout.activity_main);                autoview = (AutoCompleteTextView) findViewById(R.id.auto_tv);                adapter = new AutoTextViewAdapter(this);                autoview.setAdapter(adapter);                autoview.setThreshold(1);//输入1个字符时就开始检测,默认为2个                autoview.addTextChangedListener(this);//监听autoview的变化        }          @Override        public void afterTextChanged(Editable s) {                // TODO Auto-generated method stub                String input = s.toString();          adapter.mList.clear();          autoAddEmails(input);        adapter.notifyDataSetChanged();          autoview.showDropDown();          }                  /**         * 自动填充邮箱列表         * @param input         */        private void autoAddEmails(String input) {                System.out.println("input-->" + input);                String autoEmail = "";        if (input.length() > 0) {              for (int i = 0; i < AUTO_EMAILS.length; ++i) {                      if(input.contains("@")) {
//包含“@”则开始过滤 String filter = input.substring(input.indexOf("@") + 1 , input.length());//获取过滤器,即根据输入“@”之后的内容过滤出符合条件的邮箱 System.out.println("filter-->" + filter); if(AUTO_EMAILS[i].contains(filter)) {
//符合过滤条件 autoEmail = input.substring(0, input.indexOf("@")) + AUTO_EMAILS[i];//用户输入“@”之前的内容加上自动填充的内容即为最后的结果 adapter.mList.add(autoEmail); } }else { autoEmail = input + AUTO_EMAILS[i]; adapter.mList.add(autoEmail); } } } } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub }}

适配器代码如下:

package com.guet.zhuge;  import java.util.ArrayList;import java.util.List;  import android.content.Context;import android.graphics.Color;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Filter;import android.widget.Filterable;import android.widget.TextView;    public class AutoTextViewAdapter extends BaseAdapter implements Filterable {                      public List
mList; private Context mContext; private MyFilter mFilter; public AutoTextViewAdapter(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 tv = new TextView(mContext); tv.setTextColor(Color.BLACK); tv.setTextSize(20); convertView = tv; } TextView txt = (TextView) convertView; txt.setText(mList.get(position)); return txt; } public Filter getFilter() { if (mFilter == null) { mFilter = new MyFilter(); } return mFilter; } private class MyFilter extends Filter { @Override protected FilterResults performFiltering(CharSequence constraint) { 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(); } } } }

主要的xml 部分文件:

 

 

继续学习!

转载于:https://www.cnblogs.com/ws5861/p/3475943.html

你可能感兴趣的文章
Android轻量级的开源缓存框架ASimpleCache
查看>>
他山之石:加载图片的一个小问题
查看>>
shell - 常识
查看>>
mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
查看>>
分层图最短路【bzoj2763】: [JLOI2011]飞行路线
查看>>
linux下编译复数类型引发的错误:expected unqualified-id before '(' token
查看>>
codeforces 1041A Heist
查看>>
Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)
查看>>
bzoj1048 [HAOI2007]分割矩阵
查看>>
Java中的编码
查看>>
PKUWC2018 5/6
查看>>
As-If-Serial 理解
查看>>
洛谷P1005 矩阵取数游戏
查看>>
在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
查看>>
无线通信基础(一):无线网络演进
查看>>
如何在工作中快速成长?阿里资深架构师给工程师的10个简单技巧
查看>>
WebSocket 时时双向数据,前后端(聊天室)
查看>>
关于python中带下划线的变量和函数 的意义
查看>>
linux清空日志文件内容 (转)
查看>>
安卓第十三天笔记-服务(Service)
查看>>