AutoCompleteTextView与自定义Adapter实现自动补全

本文介绍了如何利用Android中的AutoCompleteTextView和Adapter实现自动补全功能。首先,通过XML布局文件添加AutoCompleteTextView,并设置输入类型。接着,使用预定义的ArrayAdapter设置提示数据。然后,为了达到预期效果,自定义Adapter,继承BaseAdapter并实现Filterable接口,重写相关方法,包括performFiltering和publishResult,以根据用户输入过滤数据。最后,通过getView方法控制数据显示。通过这种方式,完成了一个简单的自动补全功能实现。
摘要由CSDN通过智能技术生成

AutoCompleteTextView继承自TextView,是一种可以实现自动补全的功能的TextView。先看效果:
最终效果
该功能在目前很常见,例如在用户进行登录的时候或者注册的时候都用到了这种功能,在Android中这样的效果我们可以借助AutoComleteTextView来实现。
为了实现补全功能AutoCompleteTextView需要和Adapter(适配器)一起使用。Android为我们封装好了一些简单的适配器可以直接使用,当然我们也可以使用自定义的适配器来进行补充。
先从简单的开始,我们直接使用Android系统为我们提供的适配器来实现补全功能:

1、 先在xml文件中添加AutoCompleteTextView控件

    <AutoCompleteTextView
        android:id="@+id/autoCompeteTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入用户名"
        android:inputType="number"/>

注意inputType属性是在这里申明了该控件只接受数字型的数据输入。

2、在java文件中申明并获取该控件

    private AutoCompleteTextView autoCompleteTextView;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_atctextview);
        autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.autoCompeteTextView);

    }

3、为AutoCompleteTextView设置适配器

 autoCompleteTextView.setThreshold(1);
 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,test);
        autoCompleteTextView.setAdapter(adapter);

setThreshold()方法是设置当用户输入多少字符时开始进行提示,不写这个方法也行,默认的设置为2。
在new ArrayAdapter时需要传入三个参数。
第一个参数是当前的上下文,暂且不提。
第二个参数是显示提示时的View,在这里我们传入的是系统为我们提供好的一个xml布局文件,在该xml布局文件里只有一个TextView控件。
第三个参数是我们设置的提示数据,当用户的输入和我们传入的提示数据匹配时,才会出现补全提示。
在这里我设置的提示数据是一个String数组

    private String[] test = {
  "123","234","345","456"};

整体代码如下:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值