在输入框中输入我们想要输入的信息就会出现其他与其相关的提示信息,这种效果在Android中是用AutoCompleteTextView实现的。
<AutoCompleteTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/autotext" />
public class MainActivity extends Activity { private AutoCompleteTextView autotext; private ArrayAdapter<String> arrayAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); autotext =(AutoCompleteTextView) findViewById(R.id.autotext); String [] arr={"aa","aab","aac"}; arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,arr); autotext.setAdapter(arrayAdapter); } }
AutoCompleteTextView常用属性 | |
---|---|
android:completionHint | 设置出现在下拉菜单中的提示标题 |
android:completionThreshold | 设置用户至少输入多少个字符才会显示提示 |
android:dropDownHorizontalOffset | 下拉菜单于文本框之间的水平偏移。默认与文本框左对齐 |
android:dropDownHeight | 下拉菜单的高度 |
android:dropDownWidth | 下拉菜单的宽度 |
android:singleLine | 单行显示 |
android:dropDownVerticalOffset | 垂直偏移量 |
========================================
自定义适配器
========================================
最近项目中需要做搜索功能,实现类似 Google、Baidu 搜索的 下拉提示效果。android为我们提供了 AutoCompleteTextView 控件来完成此功能。
网上好多例子都是简单使用 ArrayAdapter 来实现的,界面比较简单,实际项目中用处不大;自己研究了一番,自定义Adapter 继承BaseAdapter 并实现Filterable 接口 实现了上述功能。
运行效果截图
- package com.example.actv;
- import java.util.ArrayList;
- import java.util.List;
- import com.example.actv.entity.PhoneContact;
- import android.os.Bundle;
- import android.app.Activity;
- import android.view.Menu;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.AutoCompleteTextView;
- public class MainActivity extends Activity implements OnItemClickListener {
- List<PhoneContact> mList;
- private AutoCompleteTextView mACTV;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- buildAppData();
- findView();
- }
- private void buildAppData() {
- String[] names = { "abc", "allen", "bird", "bike", "book", "cray",
- "david", "demon", "eclipse", "felling", "frank", "google",
- "green", "hill", "hook","jin zhiwen", "jack", "jay", "king","kevin","kobe",
- "lily", "lucy", "mike", "nike", "nail", "open","open cv",
- "panda", "pp", "queue", "ray allen", "risk", "tim cook","T-MAC","tony allen",
- "x man", "x phone", "yy", "world", "w3c", "zoom","zhu ziqing"};
- mList = new ArrayList<PhoneContact>();
- for (int i = 0; i < names.length; i++) {