Android 自动完成文本框
一、自动完成文本框的定义:
自动完成文本框是在输入框中根据输入信息提示与其相关信息的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 自动完成文本框相关推荐
- android用java写文本框_Android 自动完成文本框的实例
Android:自动完成文本框 xml文件代码如下: xmlns:android="http://schemas.android.com/apk/res/android" andr ...
- android 自动补全方法,Android零基础入门|自动完成文本框AutoCompleteTextView
原标题:Android零基础入门|自动完成文本框AutoCompleteTextView 上一期学习的Spinner的使用,掌握的怎么样?本期一起来学习AutoCompleteTextView的使用. ...
- android脚步---自动完成文本框
自动完成文本框AutoCompleteTextView,当用户输入一定字符时,自动完成文本框会显示一个下拉菜单,供用户选择,设置一个Adapter,该Adapter中封装了AutoCompleteTe ...
- Android学习笔记 2.5.3 实例——使用SimpleAdapter创建ListView 2.5.4 自动完成文本框(AutoCompleteTextView)的功能与用法
Android学习笔记 疯狂Android讲义 文章目录 Android学习笔记 疯狂Android讲义 第2章 Android 应用的界面编程 2.5 第4组 UI组件:AdapterView及其子 ...
- Android的高级控件(自动提示文本框与下拉列表)
一.高级控件与常用控件的区别:是否使用适配器 二.适配器 1.种类 ①.数组适配器 ArrayAdapter new ArrayAdapter<String>(this,R.l ...
- android activity焦点,android启动activity文本框不获得焦点
在开发中,常常会碰到这种情况,打开一个activity后,第一个文本框自动获得焦点,同时会弹出软键盘输入框,这样很影响用户体验,现在来看解决方法. 我们先来看看为什么会出现上述情况,原因很简单,文本框 ...
- 自动完成文本框AutoCompleteTextView
自动完成文本框AutoCompleteTextView:用户输入一定字符后,会显示一个下拉菜单供用户选择 android:completionHint="请输入"设置出现在下拉菜单 ...
- react 文本框_React自动完成文本框
react 文本框 In this React tutorial for beginners you will learn to create a basic React app and an aut ...
- android开发TextView(文本框)详解
android开发TextView(文本框)详解 作用 TextView(文本框),用于显示文本的一个控件 属性详解 以该代码段为例 <TextViewandroid:id="@+id ...
最新文章
- 薛其坤、向涛两位院士,担任这家研究院联合院长
- Xamarin iOS开发实战上册(内部资料daxueba.net)
- linux 脏牛提权 cve-2016-5159
- SharePoint 2013 术语和术语集介绍
- 创建容器时[Warning] IPv4 forwarding is disabled. Networking will not work.
- 在某公司用到一些shell
- Python 自带的 any() 函数--判断给定的可迭代参数 iterable 是否全部为 False
- 关系数据库的基本概念和MySQL说明
- mysql修改表字段小数点精度_技术篇-将字段类型decimal批量处理从2位改为4位小数点sql,解决数据库存储精度...
- 计算机安全最基础知识,计算机的分类(信息安全基础知识)
- idea创建包怎么让包分层_IDEA让包分层显示的实现方式
- 如何用 NAS 搭建属于自己的云端书库 | 极客分享第 32 期
- 计算机科学与技术专业毕业答辨问题,计算机科学与技术毕业论文题目参考
- 概率论——随机变量、概率分布函数、概率密度函数、联合概率密度
- 买的鱼丸怎么做好吃 鱼丸的家常做法介绍
- netty权威指南目录
- vscode分支合并
- 一条狗的死亡,引发3亿网友愤怒!希望这条黑科技 “汪星人” 能从小培养人的爱心 | 钛空智慧星球推荐
- Web组态编辑器赋能智慧石油生产储运2D可视化
- Kotlin - DSL
热门文章
- 【科普】什么是@[TOC]()?
- 出奇制胜:绕过Cloudflare验证的神秘方法
- ownclound+nextcloud
- SDU创新实训 9.创建各类文件数据汇总整理
- 面向对象-方法 习题
- Windows XP环境下IPSec 隧道的配置
- 时间筛选之 本周、上周、更早
- Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector解读
- How to get Full Rom Dump / Stock ROM of MT6572 MediaTek Smartphones using SPFT and MTK Droid Root an
- maya检查和删除多重面