今天在逛博客的时候发现一个比较实用的控件,就是AutoCompleteTextView,从命名上看叫自动完成文本框,光看名字估计不知道它能实现什么功能,当我看完介绍后脑海里一下就想到了项目中做搜索筛选的时候,用这个控件简直不要太好用,下面就通过一个demo来学习一下:
首先先来看一下实现的效果:
![](https://img.haomeiwen.com/i17127000/b9a43bb6ef2ba6bc.gif)
通过上图可以直观的看出AutoCompleteTextView的效果就是,根据你输入的字符提示相关的内容,这个功能在搜索筛选的时候很实用吧。下面看看代码实现:
<AutoCompleteTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/auto_complete_text_view"
android:completionThreshold="1"/>
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AutoCompleteTextView autoCompleteTextView = findViewById(R.id.auto_complete_text_view);
//设置数据
List<String> datas = new ArrayList<>();
datas.add("语文");
datas.add("数学");
datas.add("外语");
datas.add("物理");
datas.add("化学");
datas.add("生物");
//创建适配器
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_dropdown_item_1line,datas);
//绑定适配器
autoCompleteTextView.setAdapter(adapter);
}
}
布局和代码都非常的简单,这里需要说明两个地方:
一:在布局中需要加上android:completionThreshold="1"
这句代码,设置输入一个字就提示,如果不写这句代码是不会提示你的。
二:在代码中创建适配器的时候传入的第二个参数,是一个TextView而不是一个布局,否则会报这个错误java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
,这里也可以直接传这个android.R.layout.simple_dropdown_item_1line
默认的。
好了,以上就是对AutoCompleteTextView的学习,加入到项目中非常的实用。
对了,最后附上我学习到这个控件的地址https://www.runoob.com/w3cnote/android-tutorial-autocompletetextview.html
网友评论