AutoCompleteTextView的使用(EditText自动提示)
2016-09-22 23:36
363 查看
实现一个EditText自动提示的功能,使用AutoCompleteTextView控件,别看后面有个TextView,其实是EditText的子类。
具体思路,找到控件 > 设置adapter > 填充条目 > 在adapter中设置实时查询
activity_main.xml
item.xml
MainActivity.java
TestAdapter.java
所需权限
具体思路,找到控件 > 设置adapter > 填充条目 > 在adapter中设置实时查询
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.smartsms.adolpher.myapplication.MainActivity"> <!-- 默认为2个字开始查询,改为1个字开始查询--> <AutoCompleteTextView android:id="@+id/autocomplete" android:layout_width="match_parent" android:layout_height="wrap_content" android:completionThreshold="1" /> </RelativeLayout>
item.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="5dp" > <TextView android:id="@+id/tv_item_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="名字" android:textSize="20sp" /> <TextView android:id="@+id/tv_item_number" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="134321" android:textSize="18sp" /> </LinearLayout>
MainActivity.java
package com.smartsms.adolpher.myapplication; import android.database.Cursor; import android.provider.ContactsContract; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.AutoCompleteTextView; import android.widget.FilterQueryProvider; import android.widget.ListView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AutoCompleteTextView autocomplete = (AutoCompleteTextView) findViewById(R.id.autocomplete); //创建adapter,最后一个参数为cursor,先为null,后期重新赋值 TestAdapter adapter = new TestAdapter(this, null); //设置adapter autocomplete.setAdapter(adapter); //设置实时查询 adapter.setFilterQueryProvider(new FilterQueryProvider() { @Override public Cursor runQuery(CharSequence constraint) { //constraint就是实时输入的东西 //拿这个东西和数据库中的数据匹配 //查询字段 String[] projection = { "_id", "display_name", "data1" }; //模糊查询 String selection = "data1 like '%" + constraint + "%'"; Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, selection, null, null); //把cursor替换原来的cursor return cursor; } }); } }
TestAdapter.java
package com.smartsms.adolpher.myapplication; import android.content.Context; import android.database.Cursor; import android.view.View; import android.view.ViewGroup; import android.widget.CursorAdapter; import android.widget.TextView; public class TestAdapter extends CursorAdapter { public TestAdapter(Context context, Cursor c) { super(context, c); } //条目 @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { return View.inflate(context, R.layout.item, null); } //条目中的数据 @Override public void bindView(View view, Context context, Cursor cursor) { ViewHolder holder = getHolder(view); holder.tv_item_name.setText(cursor.getString(cursor.getColumnIndex("display_name"))); holder.tv_item_number.setText(cursor.getString(cursor.getColumnIndex("data1"))); } private ViewHolder getHolder(View view){ ViewHolder holder = (ViewHolder) view.getTag(); if(holder == null){ holder = new ViewHolder(view); view.setTag(holder); } return holder; } //条目优化 class ViewHolder{ public TextView tv_item_name; public TextView tv_item_number; public ViewHolder(View v){ tv_item_name = (TextView) v.findViewById(R.id.tv_item_name); tv_item_number = (TextView) v.findViewById(R.id.tv_item_number); } } }
所需权限
<uses-permission android:name="android.permission.READ_CONTACTS"/>
相关文章推荐
- AutoCompleteTextView 自动提示功能使用详解
- AutoCompleteTextView自动提示文本的使用
- android学习:自动提示AutoCompleteTextView的使用
- AutoCompleteTextView自动提示控件的使用(by 星空武哥)
- [控件]自动提示 AutoCompleteTextView MultiAutoCompleteTextView
- Android自动提示--AutoCompleteTextView、MultiAutoCompleteTextView
- AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字,Filterable的使用)
- android中的自动提示框AutoCompleteTextView
- Android UI控件系列:AutoCompleteTextView(自动提示)
- AutoCompleteTextView使用——自动完成文本框
- AutoCompleteTextView(自动提示)
- 第十五讲-----SimpleAdapter 封装复杂数据,ListActivity 类,ListView 事件,自动文本提示组件 AutoCompleteTextView
- AutoCompleteTextView(自动提示)
- AutoCompleteTextView (自动完成输入框自动提示功能的菜单)
- AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字,Filterable的使用)
- Android开发之自动提示框—AutoCompleteTextView
- 使用AutoCompleteTextView和MultiAutoCompleteTextView提示输入内容
- AutoCompleteTextView 自动提示输入
- Android——自动完成输入框提示功能的菜单_AutoCompleteTextView
- MultiAutoCompleteTextView和AutoCompleteTextView两个自动完成功能控件的使用