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


相关推荐: EditPlus中的正则表达式实战(6)  深圳网站制作的公司有哪些,dido官方网站?  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  python中快速进行多个字符替换的方法小结  Laravel如何处理和验证JSON类型的数据库字段  b2c电商网站制作流程,b2c水平综合的电商平台?  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  如何快速搭建FTP站点实现文件共享?  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  如何在阿里云服务器自主搭建网站?  如何在IIS7上新建站点并设置安全权限?  如何快速生成可下载的建站源码工具?  Mybatis 中的insertOrUpdate操作  如何在橙子建站中快速调整背景颜色?  深圳网站制作平台,深圳市做网站好的公司有哪些?  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  如何实现javascript表单验证_正则表达式有哪些实用技巧  详解jQuery中基本的动画方法  Bootstrap整体框架之JavaScript插件架构  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  js实现点击每个li节点,都弹出其文本值及修改  简单实现Android验证码  Laravel如何使用Telescope进行调试?(安装和使用教程)  Python自动化办公教程_ExcelWordPDF批量处理案例  Laravel如何配置和使用缓存?(Redis代码示例)  音响网站制作视频教程,隆霸音响官方网站?  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  Swift开发中switch语句值绑定模式  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  如何用腾讯建站主机快速创建免费网站?  网站制作报价单模板图片,小松挖机官方网站报价?  如何用PHP工具快速搭建高效网站?  详解jQuery中的事件  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  Laravel怎么调用外部API_Laravel Http Client客户端使用  如何注册花生壳免费域名并搭建个人网站?  香港服务器选型指南:免备案配置与高效建站方案解析  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  如何在阿里云通过域名搭建网站?