zoukankan      html  css  js  c++  java
  • MultiAutoCompleteTextView和AutoCompleteTextView两个自动完成功能控件的使用

    MultiAutoCompleteTextView

    可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配

    可用在发短信,发邮件时选择联系人这种类型当中。

    使用时需要执行设置分隔符方法

    AutoCompleteTextView

    支持基本的自动完成功能,适用在各种搜索功能中,并且可以根据自己的需求设置他的默认显示数据

    两个控件都可以很灵活的预置匹配的那些数据,并且可以设置输入多少值时开始匹配等等功能

    效果图

    示例:

    主布局文件

    multi_textview.xml

    Xml代码 复制代码 收藏代码
    1. <MultiAutoCompleteTextView  
    2.         android:layout_height="wrap_content" android:layout_width="fill_parent"  
    3.         android:id="@+id/multi_txt"></MultiAutoCompleteTextView>  
    4.     <AutoCompleteTextView  
    5.         android:layout_height="wrap_content" android:layout_width="fill_parent"  
    6.         android:id="@+id/auto_txt"></AutoCompleteTextView>  
    <MultiAutoCompleteTextView
    		android:layout_height="wrap_content" android:layout_width="fill_parent"
    		android:id="@+id/multi_txt"></MultiAutoCompleteTextView>
    	<AutoCompleteTextView
    		android:layout_height="wrap_content" android:layout_width="fill_parent"
    		android:id="@+id/auto_txt"></AutoCompleteTextView>

    数据适配布局文件

    multi_item.xml

    Xml代码 复制代码 收藏代码
    1. <TextView android:id="@+id/subject"  
    2.     xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:layout_width="fill_parent" android:layout_height="30px"  
    4.     android:singleLine="true"    
    5.     android:ellipsize="end" />  
    <TextView android:id="@+id/subject"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" android:layout_height="30px"
        android:singleLine="true" 
        android:ellipsize="end" />

    资源文件

    string.xml

    Xml代码 复制代码 收藏代码
    1. <resources>  
    2.     <string-array name="mutilstring">  
    3.         <item>test1</item>  
    4.         <item>test2</item>  
    5.         <item>test3</item>  
    6.     </string-array>  
    7. </resources>  
    <resources>
        <string-array name="mutilstring">
            <item>test1</item>
            <item>test2</item>
            <item>test3</item>
        </string-array>
    </resources>
    

    执行数据绑定

    Java代码 复制代码 收藏代码
    1. //数据适配准备   
    2. ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,   
    3.         R.layout.multi_item, getResources().getStringArray(   
    4.                 R.array.mutilstring));   
    5.   
    6. //多匹配的自动完成   
    7. MultiAutoCompleteTextView mtxt = (MultiAutoCompleteTextView) findViewById(R.id.multi_txt);   
    8. //设置适配   
    9. mtxt.setAdapter(adapter);   
    10. // 设置输入多少字符时自动匹配   
    11. mtxt.setThreshold(2);   
    12. // 设置分隔符   
    13. mtxt.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());   
    14.   
    15. //单一的自动完成   
    16. AutoCompleteTextView auto_txt = (AutoCompleteTextView) findViewById(R.id.auto_txt);   
    17. auto_txt.setAdapter(adapter);  

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    **************************************************************************************

    MultiAutoCompleteTextView补充

    一、结构
      public class MultiAutoCompleteTextView extends AutoCompleteTextView
      java.lang.Object
      android.view.View
      android.widget.TextView
      android.widget.EditText
      android.widget.AutoCompleteTextView
      android.widget.MultiAutoCompleteTextView
      二、 类概述


      一个继承自AutoCompleteTextView的可编辑的文本视图,能够对用户键入的文本进行有效地扩充提示,而不需要用户输入整个内容。(用户输入一部分内容,剩下的部分系统就会给予提示)。
      用户必须提供一个MultiAutoCompleteTextView.Tokenizer以用来区分不同的子串。
      下面的代码片段展示了如何创建一个文本视图,这个视图用来对用户输入的国家名称进行有效地补充提示。


      三、公共方法
      public boolean enoughToFilter ()
      此方法并不是检验什么时候文本的总长度超过了预定的值,而是在仅当从函数findTokenStart()到getSelectionEnd()函数得到的文本长度为0或者超过了预定值的时候才起作用。(译者注:当文本长度超过阈值时过滤)
      public void performValidation ()
      此子类方法并不是用来确定整个文本的有效性,而是用来确定文本中的单个符号的有效性。空标记将被移除。
      public void setTokenizer (MultiAutoCompleteTextView.Tokenizer t)
      设置用来决定用户正在输入文本的范围的分词组件。
      四、 受保护方法
      protected void performFiltering (CharSequence text, int keyCode)
      此方法并不过滤整个编辑框的内容,只是过滤从函数findTokenStart() 到函数getSelectionEnd()获得的长度为0或者超过了预定的值的文本内容。
      参数
      text          指定过滤模式
      keyCode           插入到编辑框中的最后一个字符;当字符(文本)是通过软键盘输入的时候,小心此字符的值可能为NULL。
      protected void performFiltering (CharSequence text, int start, int end, int keyCode)
      启动对下拉式列表内容的过滤。过滤模式为编辑框中指定的范围。子类可覆盖此方法,以便于采用一个不同的模式。
      protected void replaceText (CharSequence text)
      通过替换从函数findTokenStart() 到函数 getSelectionEnd()得到的文本文本范围以及传递给函数terminateToken()的文版返回的结果来实现文本的输入。另外,文本的替换区域将会被标记为自动文本区,这样如果用户直接按DEL键,执行过程就会停止。子类可覆盖此方法来实现许多不同的文本插入工作。
      参数
      text          下拉列表里的选中项

  • 相关阅读:
    [论文笔记] On Construction of Cloud IaaS for VM Live Migration Using KVM and OpenNebula (ICA3PP, 2012)
    [论文笔记] Energyaware resource allocation heuristics for efficient management of data centers for Cloud computing (FGCS, 2012)
    [概念学习] hypervisor
    [论文泛读] Dynamic placement of virtual machines for managing sla violations (IM, 2007)
    [论文笔记] Costs of virtual machine live migration A survey (SERVICES, 2012)
    [论文笔记] Live Migration of Multiple Virtual Machines with Resource Reservation in Cloud Computing Environments (CLOUD, 2011)
    vscode如何搭建vue项目
    jenkins部署
    yum命令Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
    Spring 笔记——核心数据规则篇
  • 原文地址:https://www.cnblogs.com/qingblog/p/2511572.html
Copyright © 2011-2022 走看看