一、自动完成文本框的定义:
自动完成文本框是在输入框中根据输入信息提示与其相关信息的UI控件。
二、如何使用自动完成文本框:
【ListView】
1.系统提供的Adapter填充数据
2.自定义Adapter填充数据
【AutoCompleteTextView】
1.系统提供的Adapter填充数据
2.自定义Adapter填充数据
三、使用系统提供的Adapter填充数据:
1)编写布局

<AutoCompleteTextView        android:id="@+id/auto_complete_textview"  android:layout_width="match_parent" android:layout_height="wrap_content" android:completionHint=“请选择歌曲" android:drawableLeft="@android:drawable/ic_search_category_default"/>

2)准备数据

 protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_auto_complete_text_view);// 准备数据String[] books = new String[]{“rollen”,"rollenholt", "rollenren", "roll"};}

3)关联数据

 protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_auto_complete_text_view);// 准备数据String[] books = new String[]{“rollen”,"rollenholt", "rollenren", "roll"};// 关联数据ArrayAdapter<String> av = newArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, books);AutoCompleteTextView auto = findViewById(R.id.auto_complete_textview);auto.setAdapter(av);}

4)查看效果

四、使用自定义Adapter填充数据
1)编写布局-Activity

<AutoCompleteTextView        android:id="@+id/auto_complete_textview"  android:layout_width="match_parent" android:layout_height="wrap_content" android:completionHint=“选择Email" android:drawableLeft="@android:drawable/ic_search_category_default"/>

2)编写布局-提示项列表

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><ImageViewandroid:layout_width="50dp"android:layout_height="50dp"android:src="@drawable/ic_email_black_24dp" /><TextViewandroid:id="@+id/tv_email_name"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_vertical"android:textSize="22sp" />
</LinearLayout>

3)准备数据-Adapter

public class AutoCompleteTextViewActivity extends AppCompatActivity {private ArrayList<String> data = new ArrayList<>();private String[] emails = {"@qq.com", "@163.com", "@sina.com", "@gmail.com"}protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_auto_complete_text_view);}…}

4)关联数据

class SearchEmailAdapter extends BaseAdapter {public int getCount() {return data.size();}public Object getItem(int position) {return data.get(position);}public long getItemId(int position) {return position;}class ViewHolder {TextView tvEmail;}
}

5)关联数据-Adapter

 public View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {holder = new ViewHolder();convertView = LayoutInflater.from(AutoCompleteTextViewActivity.this).inflate(R.layout.email_search_layout, null);holder.tvEmail = convertView.findViewById(R.id.tv_email_name);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.tvEmail.setText(data.get(position));return convertView;}class SearchEmailAdapter extends BaseAdapter implements Filterable {public Filter getFilter() {Filter filter = new Filter() {protected FilterResults performFiltering(CharSequence constraint) {FilterResults results = new FilterResults();ArrayList<String> newData = new ArrayList<>();if (constraint != null && !constraint.toString().contains("@")) {for (String data : emails) {newData.add(constraint + data);}}results.values = newData;results.count = newData.size();return results;}protected void publishResults(CharSequence constraint, FilterResults results) {data = (ArrayList) results.values;notifyDataSetChanged();}![在这里插入图片描述](https://img-blog.csdnimg.cn/20190215091225522.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc3ODcyMA==,size_16,color_FFFFFF,t_70)};return filter;}
}

6)关联数据-Activity

public class AutoCompleteTextViewActivity extends AppCompatActivity {private ArrayList<String> data = new ArrayList<>();private String[] emails = {"@qq.com", "@163.com", "@sina.com", "@gmail.com"}protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_auto_complete_text_view);AutoCompleteTextView auto = findViewById(R.id.auto_complete_textview);auto.setAdapter(new SearchEmailAdapter());}…}

7)运行效果

五、自动完成文本框的属性方法:
clearListSelection() 清除所有的提示列表项
getAdapter() 取得数据集
setAdapter() 设置数据集
setOnClickListener() 设置单击事件
setOnItemClickListener() 在选项上设置单击事件
setOnItemSelectedListener() 选项选中时的事件

Android 自动完成文本框相关推荐

  1. android用java写文本框_Android 自动完成文本框的实例

    Android:自动完成文本框 xml文件代码如下: xmlns:android="http://schemas.android.com/apk/res/android" andr ...

  2. android 自动补全方法,Android零基础入门|自动完成文本框AutoCompleteTextView

    原标题:Android零基础入门|自动完成文本框AutoCompleteTextView 上一期学习的Spinner的使用,掌握的怎么样?本期一起来学习AutoCompleteTextView的使用. ...

  3. android脚步---自动完成文本框

    自动完成文本框AutoCompleteTextView,当用户输入一定字符时,自动完成文本框会显示一个下拉菜单,供用户选择,设置一个Adapter,该Adapter中封装了AutoCompleteTe ...

  4. Android学习笔记 2.5.3 实例——使用SimpleAdapter创建ListView 2.5.4 自动完成文本框(AutoCompleteTextView)的功能与用法

    Android学习笔记 疯狂Android讲义 文章目录 Android学习笔记 疯狂Android讲义 第2章 Android 应用的界面编程 2.5 第4组 UI组件:AdapterView及其子 ...

  5. Android的高级控件(自动提示文本框与下拉列表)

    一.高级控件与常用控件的区别:是否使用适配器 二.适配器 1.种类 ①.数组适配器 ArrayAdapter       new ArrayAdapter<String>(this,R.l ...

  6. android activity焦点,android启动activity文本框不获得焦点

    在开发中,常常会碰到这种情况,打开一个activity后,第一个文本框自动获得焦点,同时会弹出软键盘输入框,这样很影响用户体验,现在来看解决方法. 我们先来看看为什么会出现上述情况,原因很简单,文本框 ...

  7. 自动完成文本框AutoCompleteTextView

    自动完成文本框AutoCompleteTextView:用户输入一定字符后,会显示一个下拉菜单供用户选择 android:completionHint="请输入"设置出现在下拉菜单 ...

  8. react 文本框_React自动完成文本框

    react 文本框 In this React tutorial for beginners you will learn to create a basic React app and an aut ...

  9. android开发TextView(文本框)详解

    android开发TextView(文本框)详解 作用 TextView(文本框),用于显示文本的一个控件 属性详解 以该代码段为例 <TextViewandroid:id="@+id ...

最新文章

  1. 薛其坤、向涛两位院士,担任这家研究院联合院长
  2. Xamarin iOS开发实战上册(内部资料daxueba.net)
  3. linux 脏牛提权 cve-2016-5159
  4. SharePoint 2013 术语和术语集介绍
  5. 创建容器时[Warning] IPv4 forwarding is disabled. Networking will not work.
  6. 在某公司用到一些shell
  7. Python 自带的 any() 函数--判断给定的可迭代参数 iterable 是否全部为 False
  8. 关系数据库的基本概念和MySQL说明
  9. mysql修改表字段小数点精度_技术篇-将字段类型decimal批量处理从2位改为4位小数点sql,解决数据库存储精度...
  10. 计算机安全最基础知识,计算机的分类(信息安全基础知识)
  11. idea创建包怎么让包分层_IDEA让包分层显示的实现方式
  12. 如何用 NAS 搭建属于自己的云端书库 | 极客分享第 32 期
  13. 计算机科学与技术专业毕业答辨问题,计算机科学与技术毕业论文题目参考
  14. 概率论——随机变量、概率分布函数、概率密度函数、联合概率密度
  15. 买的鱼丸怎么做好吃 鱼丸的家常做法介绍
  16. netty权威指南目录
  17. vscode分支合并
  18. 一条狗的死亡,引发3亿网友愤怒!希望这条黑科技 “汪星人” 能从小培养人的爱心 | 钛空智慧星球推荐
  19. Web组态编辑器赋能智慧石油生产储运2D可视化
  20. Kotlin - DSL

热门文章

  1. 【科普】什么是@[TOC]()?
  2. 出奇制胜:绕过Cloudflare验证的神秘方法
  3. ownclound+nextcloud
  4. SDU创新实训 9.创建各类文件数据汇总整理
  5. 面向对象-方法 习题
  6. Windows XP环境下IPSec 隧道的配置
  7. 时间筛选之 本周、上周、更早
  8. Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector解读
  9. How to get Full Rom Dump / Stock ROM of MT6572 MediaTek Smartphones using SPFT and MTK Droid Root an
  10. maya检查和删除多重面