文档章节

一个android自动补全网站输出的控件

Day1096
 Day1096
发布于 2016/11/01 17:52
字数 338
阅读 17
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

自动填写的控件

Created by chang-zhiyuan on 2016/11/1 根据邮箱修改的,有不好的地方欢迎提出来

    public class AutoComplete extends AutoCompleteTextView {
    private static final String[] emailSuffix = {".com", ".net", ".com.cn", ".cn", ".cc", ".org", ".edu", ".gov", ".info"};

    public AutoComplete(Context context) {
    super(context);
    init(context);
}

    public AutoComplete(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(context);
}

    private void init(Context context) {
    final MyAdatper adapter = new MyAdatper(context);
    setAdapter(adapter);
    addTextChangedListener(new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s) {
            String input = s.toString();
            String str = "";
            adapter.mList.clear();
            if (input.length() > 0) {
                for (int i = 0; i < emailSuffix.length; ++i) {
                    if (input.contains(".")) {
                        str = input;
                    } else {
                        str = input + emailSuffix[i];
                    }
                    if (input.toString().contains("http://")) {
                        adapter.mList.add(str);
                    } else {
                        adapter.mList.add("http://" + str);
                    }
                    System.out.println("str..." + str);
                }
            }


            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) {
        }
    });
    // default=2 当输入一个字符的时候就开始检测
    setThreshold(1);
}

class MyAdatper extends BaseAdapter implements Filterable {
    List<String> mList;
    private Context mContext;
    private MyFilter mFilter;

    public MyAdatper(Context context) {
        mContext = context;
        mList = new ArrayList<String>();
    }

    @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.rgb(65, 65, 65));
            tv.setTextSize(16);
            tv.setPadding(10, 5, 10, 5);
            convertView = tv;
        }
        TextView txt = (TextView) convertView;
        txt.setText(mList.get(position));
        return txt;
    }

    @Override
    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<String>();
            }
            results.values = mList;
            results.count = mList.size();
            return results;
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            if (results.count > 0) {
                notifyDataSetChanged();
            } else {
                notifyDataSetInvalidated();
            }
        }
    }
}

}

© 著作权归作者所有

Day1096
粉丝 0
博文 5
码字总数 655
作品 0
广州
程序员
私信 提问
android (4)控件的xml属性

android:id 为控件指定相应的ID。android:text 指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串。android:textSize 指定控件当中字体的大小。android:backg...

souldepth
2014/07/29
1K
0
Flutter尝鲜:跨平台移动应用开发

开始之前 本人使用Flutter开发的一个图文App《每日图文》,可以同时运行在Android和iOS上,欢迎体验,喜欢的话还不吝Star一下。 叮叮叮~ 传送门 Flutter为何物? 随着移动App开发成本越来越...

开发的猫
2018/06/06
0
0
android 界面布局-各个布局的属性介绍

布局: 在 android 中我们常用的布局方式有这么几种: 1.LinearLayout ( 线性布局 ) :(里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角) 线性布局分为水平线性和垂直线...

长平狐
2012/08/28
4.2K
0
Android EditText

EditText继承关系:View-->TextView-->EditText   EditText的属性很多,这里介绍几个: android:hint="请输入数字!"//设置显示在空间上的提示信息 android:numeric="integer"//设置只能输......

amigos_wu
2012/06/20
879
0
七个 Android 程序猿提高效率必备工具

Android 程序猿提高效率必备工具 0x00 Code tree for GitHub 这个 Chrome 浏览器插件。 Github 作为最大同性交友网站,每天的工作几乎是从打开这个网站开始的。当我们浏览一个项目时,可以以...

hylinux1024
2017/04/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx反向代理+负载均衡+服务器宕机解决办法

反向代理 作用:保证系统安全,不暴露服务器IP,利用nginx服务器,利用内网ip进行访问,避免出现攻击服务器的情况 启动本地tomact,127.0.0.1:8080可以访问到tomcat管理页面 效果:通过 bbs....

Jack088
4分钟前
1
0
返回IEnumerable 与IQueryable相比 [关闭]

返回IQueryable<T>与IEnumerable<T>之间有什么区别? IQueryable<Customer> custs = from c in db.Customerswhere c.City == "<City>"select c;IEnumerable<Customer> custs = from c i......

技术盛宴
11分钟前
2
0
开放下载 | 《Knative 云原生应用开发指南》开启云原生时代 Serverless 之门

点击下载《Knative 云原生应用开发指南》 自 2018 年 Knative 项目开源后,就得到了广大开发者的密切关注。Knative 在 Kubernetes 之上提供了一套完整的应用 Serverless 编排服务,让应用开发...

阿里巴巴云原生
15分钟前
2
0
解密淘宝推荐实战,打造 “比你还懂你” 的个性化APP

手淘推荐简介 手淘推荐的快速发展源于2014年阿里“All in 无线”战略的提出。在无线时代,手机屏幕变小,用户无法同时浏览多个视窗,交互变得困难,在这样的情况下,手淘借助个性化推荐来提升...

阿里云官方博客
18分钟前
2
0
内核程序中进程的pid,handle,eprocess之间相互转换的方法

在内核程序开发中,我们常常需要取得某进程的pid或句柄,或者需要检索进程的eprocess结构,很多API函数需要的参数也不同,所以掌握pid<->handle<->eprocess相互转换的方法会大大提高我们的开...

simpower
20分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部