Android中AutoCompleteTextView自动提示

发布时间 - 2026-01-10 21:50:20    点击率:

我们使用控件AutoCompleteTextView 自动提示时,有时需要设置BaseAdapter,设置BaseAdapter时,需要实现Filterable,手动进行筛选。

常用属性

布局只设置了至少输入一个字符显示提示

<AutoCompleteTextView
    android:id="@+id/at"
    android:completionThreshold="1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

 private List<String> allData = new ArrayList<>();

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    allData.add("aa");
    allData.add("bb");
    allData.add("cc");
    allData.add("dd");
    allData.add("abc");
    allData.add("bcd");
    AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.at);
    MyAdapter adapter = new MyAdapter();
    textView.setAdapter(adapter);
  }

adapter适配器代码

 class MyAdapter extends BaseAdapter implements Filterable {
    DataFilter filter;
    ArrayList<String> data;

    @Override
    public int getCount() {
      if (data != null && data.size() > 0) {
        return data.size();
      }
      return 0;
    }

    @Override
    public Object getItem(int i) {
      return null;
    }

    @Override
    public long getItemId(int i) {
      return 0;
    }

    @Override
    public View getView(int position, View view, ViewGroup viewGroup) {
      TextView textView = new TextView(MainActivity.this);
      textView.setText(data.get(position));
      return textView;
    }

    @Override
    public Filter getFilter() {
      if (filter == null) {
        filter = new DataFilter();
      }
      return filter;
    }

    private class DataFilter extends Filter {

      @Override
      protected FilterResults performFiltering(CharSequence prefix) {
        //查询结果保存到FilterResults对象里
        FilterResults results = new FilterResults();
        List<String> queryData = new ArrayList<>();
        for (int i = 0; i < allData.size(); i++) {
          if (allData.get(i).contains(prefix.toString())) {
            queryData.add(allData.get(i));
          }
        }
        results.values = queryData;
        results.count = queryData.size();
        return results;
      }

      /**
       * 更新UI
       */
      @Override
      protected void publishResults(CharSequence constraint, FilterResults results) {

        List<String> queryData = (List<String>) results.values;
        if (data == null) {
          data = new ArrayList<>();
        }
        if (data.size() > 0) {
          data.clear();
        }

        if (queryData != null && queryData.size() > 0)
          for (String string : queryData) {
            data.add(string);
            notifyDataSetChanged();
          }
      }

    }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # AutoCompleteTextView  # 自动提示  # Android用户输入自动提示控件AutoCompleteTextView使用方法  # Android自动获取输入短信验证码库AutoVerifyCode详解  # Android AutoWrapTextView中英文排版问题的解决方法  # Android中使用 AutoCompleteTextView 实现手机号格式化附带清空历史的操作  # Android自动编辑文本框(AutoCompleteTextView)使用方法详解  # Android仿新浪微博oauth2.0授权界面实现代码(2)  # android中AutoCompleteTextView的简单用法(实现搜索历史)  # Android仿百度谷歌搜索自动提示框AutoCompleteTextView简单应用示例  # 关于Android HTML5 audio autoplay无效问题的解决方案  # Android AutoCompleteTextView自动提示文本框实例代码  # Android App开发的自动化测试框架UI Automator使用教程  # Android中AutoCompleteTextView与TextWatcher结合小实例  # Android AutoValue使用和扩展库  # 查询结果  # 大家多多  # void  # protected  # onCreate  # savedInstanceState  # Bundle  # Override  # List  # private  # String  # ArrayList  # allData  # super  # cc  # bb  # dd  # bcd  # abc  # aa 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在IIS管理器中快速创建并配置网站?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  Laravel如何自定义分页视图?(Pagination示例)  如何用IIS7快速搭建并优化网站站点?  Laravel用户密码怎么加密_Laravel Hash门面使用教程  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  如何快速搭建支持数据库操作的智能建站平台?  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  如何实现javascript表单验证_正则表达式有哪些实用技巧  详解Oracle修改字段类型方法总结  EditPlus中的正则表达式 实战(4)  如何在 Pandas 中基于一列条件计算另一列的分组均值  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  微信小程序 HTTPS报错整理常见问题及解决方案  Swift中循环语句中的转移语句 break 和 continue  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  Mybatis 中的insertOrUpdate操作  Laravel如何使用Blade模板引擎?(完整语法和示例)  制作公司内部网站有哪些,内网如何建网站?  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  Android滚轮选择时间控件使用详解  如何在万网利用已有域名快速建站?  Laravel怎么调用外部API_Laravel Http Client客户端使用  中国移动官方网站首页入口 中国移动官网网页登录  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  如何快速搭建FTP站点实现文件共享?  如何为不同团队 ID 动态生成多个独立按钮  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  装修招标网站设计制作流程,装修招标流程?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  三星、SK海力士获美批准:可向中国出口芯片制造设备  如何快速重置建站主机并恢复默认配置?  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  Laravel如何与Inertia.js和Vue/React构建现代单页应用  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  利用python获取某年中每个月的第一天和最后一天  C语言设计一个闪闪的圣诞树  如何用VPS主机快速搭建个人网站?  怎么用AI帮你设计一套个性化的手机App图标?  如何快速搭建高效香港服务器网站?  网站页面设计需要考虑到这些问题