`
zhiweiofli
  • 浏览: 515563 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

搞定个性化输入提示--自定义AutoCompleteTextView

阅读更多

在设计app的输入界面时,假如假如智能提示,给用户带来的不只是方便,有时候还会是惊喜。通过实践研究,发现要实现android的个性化智能提示,实在非难事。

 

在Android中提供了两种智能输入框控件分是:MultiAutoCompleteTextView 和 AutoCompleteTextView 。

 

 MultiAutoCompleteTextView 继承自AutoCompleteTextView可编辑的文本视图,能够对用户键入的文本进行有效地扩充提示,而不需要用户输入整个内容。(用户输入一部分内容,剩下的部分系统就会给予提示)。用户必须提供一个 MultiAutoCompleteTextView.Tokenizer 用来区分不同的子串。使用方法如下:

 

MultiAutoCompleteTextView m_mutil = (MultiAutoCompleteTextView) findViewById(R.id.m_autobyname);
m_mutil.setAdapter(adapter);
m_mutil.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());  //用户正在输入时,tokenizer设置用于确定文本相关范围内

 

既然  MultiAutoCompleteTextView 是 AutoCompleteTextView 的子类,那么MultiAutoCompleteTextView 的基本功能,我们都可以通过定制AutoCompleteTextView来实现了。 

AutoCompleteTextView 基本使用方法如下:

 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, autoString);  //autoString为一静态的字符数组
AutoCompleteTextView m_auto =(AutoCompleteTextView) findViewById(R.id.antobyname);
m_auto.setAdapter(adapter); //为智能输入框设置适配器
m_auto.setThreshold(1); //更改触发提示的字符长度,default=2

 

熟悉android列表开发的话,对于Adapter应该非常熟悉,上面的实例代码,使用了android提供的ArrayAdapter,给予AutoCompleteTextView 绑定数据与视图,我们要定制,首先从这里开始。

 

和其他Adaper一样,ArrayAdapter的基类也是BaseAdapter,我们可以定制自己的Adapter了。


 

可是一运行,木有反应,没有一点提示?

 

的确,我们的视图与数据是绑定了,可是AutoCompleteTextView 却不能根据我们的Adapter获取到合适的数据,因为adapter不符合要求!

 

我们反过来再研究一下ArrayAdapter,它除了是BaseAdapter的子类,它还实现了 Filterable 接口!

 

我们在AutoAdapter中,实现该接口,并返回一个自定义的 Filter

 

 

那个AutoMailFilter又是一个什么样子的类呢?

 

先细细想想 AutoCompleteTextView 是怎样工作的,对,它只是对我们所输入的一些字符,进行过滤、索引,并组成相应的视图反馈给我们的用户,以提高我们的输入效率!

 

那接下来就是构建核心过滤器的时候了,AutoCompleteTextView 只会接收过滤后的数据,所以我们的数据源会多出一份拷贝,一份是原始的,一份则是过滤后的:

 

 

在AutoMailFilter里面,由于继承了,我们必须实现两个重要的方法:

 

protected FilterResults performFiltering(CharSequence prefix) 

在这个方法里面定制过滤策略,根据输入的prefix对数据进行过滤,并组装成FilterResults 结果返回;

 

protected void publishResults(CharSequence constraint, FilterResults results) 

这个方法则是发布结果用的,把上面方法的结果按照一定的要求进行处理后,通知Adapter进行数据视图的刷新

 

总结:

 

按照 AutoCompleteTextView 的工作流程,它依赖两个组件,Adapter 和 Filter,一个是视图的处理,一个是数据过滤处理,对这两个组件进行深度定制,我们就可以随心所欲了。

 

 

  • 大小: 20.9 KB
  • 大小: 3 KB
  • 大小: 2.9 KB
0
2
分享到:
评论

相关推荐

    自定义AutoCompleteTextView下拉列表控件

    描述中提到“扩展Android系统自带的AutoCompleteTextView控件,逐字提示,支持自定义类对象指定显示字段”,这进一步明确了自定义的两个关键特性:逐字提示和自定义数据模型。 1. **逐字提示**:在默认的`...

    Android开发(30)--AutoCompleteTextView和----MultiAutoCompleteTextView自动提示输入内容

    Android开发(30)--AutoCompleteTextView和----MultiAutoCompleteTextView自动提示输入内容

    android使用AutoCompleteTextView自定义适配器样式

    在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它允许用户在输入时自动显示匹配的建议列表。通常,我们使用`ArrayAdapter`来连接数据源和`AutoCompleteTextView`,但有时默认的功能可能无法满足...

    Android自定义AutoCompleteTextView

    1. **自定义下拉列表样式**:通过重写ArrayAdapter的`getView()`方法,可以改变下拉列表中每一项的视图布局,以达到个性化的效果。例如,添加图片或者设置不同的文字颜色和大小。 2. **自定义匹配逻辑**:默认情况...

    AutoCompleteTextView自定义Item的布局

    实现工具Android studio,一般AutoCompleteTextView提示语列表的适配器只能系统提供的ArrayAdapter等,这里自定义适配器继承了BaseAdapter。

    android控件--AutoCompleteTextView

    在Android开发中,AutoCompleteTextView是一个非常实用的控件,它提供了自动补全的功能,通常用于输入框中帮助用户快速选择或输入内容。这个控件基于EditText,增加了下拉菜单选项,当用户在输入框中输入时,会显示...

    AutoCompleteTextView和自定义的CursorAdapter

    在实际开发中,我们还可以根据需求进一步定制`AutoCompleteTextView`的行为,比如添加过滤器、自定义提示项的点击事件等,以满足各种复杂场景的需求。通过阅读和理解源码,开发者可以更好地理解和利用这些组件,提升...

    AutoCompleteTextView自动提示问题

    AutoCompleteTextView是Android SDK提供的一种UI组件,用于在用户输入时提供下拉列表的自动提示功能,极大地提升了用户的输入体验。这个控件通常用于搜索框、地址输入等场景,可以根据用户输入的部分字符快速匹配出...

    AutoCompleteTextView输入汉字拼音首字母实现过滤提示

    android API中的 AutoCompleteTextView组件只能匹配过滤纯英文或者纯汉字的 经过改进后可以输入 汉字拼音匹配汉字 类似于百度搜索 例如输入x 会匹配“迅雷”“迅速” 如果输入s 也可以匹配 “迅速”

    AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字)

    AutoCompleteTextView具有输入提示的功能,但是它的这种提示不适合对股票列表的过滤,如果你玩过股票软件,就会知道只要输入股票名称的首字母或股票代码就会出现符合匹配的股票,这种过滤怎么实现呢? 还有个问题,...

    AutoCompleteTextView 自动提示联系人信息

    在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它允许用户在输入时自动显示匹配的建议列表,极大地提高了用户体验。本篇将详细讲解`AutoCompleteTextView`如何用于自动提示联系人信息,并结合从...

    AutoCompleteTextView中文和拼音关联自动提示

    总的来说,实现`AutoCompleteTextView`的中文和拼音关联自动提示需要处理汉字到拼音的转换、自定义适配器以及监听输入事件。通过这样的方式,我们可以为用户提供更加智能和便捷的输入体验。在实际开发中,还可以根据...

    Android仿百度谷歌自动提示——AutoCompleteTextView

    在Android开发中,提供用户友好的输入体验是至关重要的,其中一种常见的做法是实现自动提示功能,这在很多应用的搜索框中都能看到。本文将详细介绍如何在Android中仿照百度和谷歌的自动提示功能,利用`...

    Android基础教程(八)之-AutoCompleteTextView的应用

    在这个示例中,我们添加了一个简单的`TextView`作为提示,并且创建了一个`AutoCompleteTextView`。 ##### 2. 控制器代码 接下来,在控制器类`AutoCompleteTextViewDemo.java`中,我们需要做以下工作: - 获取`...

    autoCompleteTextView

    autoCompleteTextView自定义BaseAdapter,实现下拉单的自定义样式,用sqlite数据库存放历史记录,进行写入时提示。点击某个下拉单写入autoCompleeTextView中。

    AutoCompleteTextView自动完成文字输入

    AutoCompleteTextView是Android SDK提供的一种用于输入文本时自动补全的视图组件,它扩展了EditText,能够根据用户输入的部分文字动态显示出匹配的建议列表。这个功能在许多应用中非常常见,例如搜索引擎、地址...

    Android 学习笔记(十四):Activity-AutoCompleteTextView.doc

    2. **初始化组件**:获取XML布局中定义的`TextView`和`AutoCompleteTextView`实例。 3. **设置Adapter**:使用`ArrayAdapter`将字符串数组`items`绑定到`AutoCompleteTextView`,这样当用户输入时,`ArrayAdapter`会...

    AutoCompleteTextView自动提示输入文字信息

    AutoCompleteTextView是Android SDK提供的一款强大的输入控件,它允许用户在输入时提供下拉列表的建议,极大地提升了用户体验,特别是在处理大量可选项时。这个控件基于EditText,增加了自动补全的功能,常用于搜索...

    Smarty-Streets-AutoCompleteTextView:Gradle库。 接收并显示Smarty Streets地址建议的Android AutocompleteTextView

    Smarty Streets AutoCompleteTextView Gradle库。 Android AutoCompleteTextView,它接收并显示来自SmartyStreets的美国地址建议。 不提供地址建议,仅提供地址验证和邮政编码查找。 演示版 是的,有一个演示应用...

Global site tag (gtag.js) - Google Analytics