Android 利用AutoCompleteTextView实现模糊搜索功能,搜索结果自动提示,识别拼音首字母并转汉字提示

Android 利用AutoCompleteTextView实现模糊搜索功能,搜索结果自动提示,识别拼音首字母并转汉字提示

4315人阅读 评论(0) 收藏 举报
本文章已收录于:
分类:

这里说一下怎么利用 Android 的 AutoCompleteTextView 控件实现模糊搜索功能,AutoCompleteTextView 自带自动提示功能。如果

自动提示的布局自定义要求比较高,可以采用 EditText 和 ListView 结合实现搜索的自动提示。

先看一下效果图:

     

先看功能实现的代码:

  1. public class MainActivity extends Activity implements View.OnClickListener {  
  2.   
  3.     private LinearLayout empty;  
  4.     private AutoCompleteTextView search;  
  5.     private String[] str = {"大大大""大大小""大小大""大小小""小大大""小大小""小大小""小小小"};  
  6.   
  7.     @Override  
  8.     protected void onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.activity_main);  
  11.   
  12.         empty = (LinearLayout) findViewById(R.id.empty);  
  13.         empty.setOnClickListener(this);  
  14.         search = (AutoCompleteTextView) findViewById(R.id.search);  
  15.         // 自动提示适配器  
  16. //        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, str);  
  17.         // 支持拼音检索  
  18.         SearchAdapter<String> adapter = new SearchAdapter<String>(MainActivity.this,  
  19.                 android.R.layout.simple_list_item_1, str, SearchAdapter.ALL);  
  20.         search.setAdapter(adapter);  
  21.     }  
  22.   
  23.     @Override  
  24.     public void onClick(View v) {  
  25.         switch (v.getId()) {  
  26.             case R.id.empty:  
  27.                 search.setText("");  
  28.                 break;  
  29.         }  
  30.     }  
  31.   
  32. }  
public class MainActivity extends Activity implements View.OnClickListener {

    private LinearLayout empty;
    private AutoCompleteTextView search;
    private String[] str = {"大大大", "大大小", "大小大", "大小小", "小大大", "小大小", "小大小", "小小小"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        empty = (LinearLayout) findViewById(R.id.empty);
        empty.setOnClickListener(this);
        search = (AutoCompleteTextView) findViewById(R.id.search);
        // 自动提示适配器
//        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, str);
        // 支持拼音检索
        SearchAdapter<String> adapter = new SearchAdapter<String>(MainActivity.this,
                android.R.layout.simple_list_item_1, str, SearchAdapter.ALL);
        search.setAdapter(adapter);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.empty:
                search.setText("");
                break;
        }
    }

}
这里可以看到, AutoCompleteTextView 实现自动提示功能需要为其设置适配器,上图中注释的部分就是最普通的适配器,仅支持中

文检索,如果需要支持拼音首字母检索,需要使用一个自定义的适配器 SearchAdapter ,博主这里提供一个使用的演示,至于具体

的代码工具类的支持也是从网上查找的资源。所以这里对 SearchAdapter 具体代码不做详细说明了,可以下载完整工程查看。

这里对目录结构稍作说明:


如图,需要在 src/main/ 下新建一个 assets 文件夹,将对拼音支持的文本文件拷贝到其中。util 文件夹下的三个类不需要再做处理,

直接拷贝到自己的工程中直接使用就可。


这里再说一下 AutoCompleteTextView 的一些属性:

        android:completionHint :设置下拉菜单中的提示标题。

        android:completionHintView :设置下拉菜单中提示标题的视图。

        android:completionThreshold :设置用户至少输入几个字符才会显示提示。

        android:dropDownHeight :设置下拉菜单高度。

        android:dropDownWidth :设置下拉菜单宽度。

        android:dropDownHorizontalOffset :设置下拉菜单与文本框之间的水平偏移。默认与文本框左对齐。

        android:dropDownVerticalOffset :设置下拉菜单与文本框之间的垂直偏移。默认紧跟文本框。

        android:popupBackground :设置下拉菜单的背景。


完整源码

29
1
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值