Android——自动完成文本(AutoCompleteTextView)

1、现实场景

想象这样一个场景:上网搜索时,只要输入几个文字,搜索框就会提示相近的关键字。Android提供了这种功能的控件-AutoCompleteTextView。

2、AutoCompleteTextView简介

AutoCompleteTextView是一个文本框组件,它提供了自动完成文本功能。用户只需输入一部分内容,剩下部分系统就会给予提示。

3、AutoCompleteTextView的工作原理

AutoCompleteTextView的自动提示功能需要适配器(adapter)提供数据。数据适配器相当于是数据与控件之间的中间桥梁,建立了数据源与控件之间的适配关系,可以使用系统自带适配器,如ArrayAdapter、SimpleAdapter直接适配数据,也可以继承与BaseAdapter自定义复杂的数据源。从而将数据源转换为控件能够显示的数据格式,从而将数据的来源与数据的显示进行解耦,降低程序的耦合性。

4、常用的数据适配器

ArrayAdapter:支持泛型操作,填充数组和List集合数据,常用于显示文本列表。

SimpleAdapter:填充List<? extends Map<String,?>>格式的数据,可以自定义多种效果,显示更丰富的列

SimpleCursorAdapter:填充Cursor(数据库查询结果集)数据。

BaseAdapter:抽象类,实际开发中会继承这个类并且重写相关方法,自定义填充数据方式和显示方法。

5、为AutoCompleteTextView提供数据操作步骤

通过findViewByID方法建立对象

提供数据:数据源可以是数组、XML文件、集合等;

提供布局;

建立适配器ArrayAdapter 关联适配器

6、【实例】利用AutoCompleteTextView实现了电话号码自动输入的UI。

 

7、代码实现

(1)布局文件代码

<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.autocompletetextview.MainActivity" >

	<AutoCompleteTextView 
	    android:layout_width="match_parent"
	    android:layout_height="wrap_content"
	    android:hint="请输入手机号..."
	    android:id="@+id/actv"/>
	
</RelativeLayout>

(2)源文件代码

package com.example.autocompletetextview;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class MainActivity extends Activity {
	AutoCompleteTextView actv;
	String []tel={"10010","10086","10011"};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		actv=(AutoCompleteTextView) findViewById(R.id.actv);
		ArrayAdapter<String> adapter =new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_dropdown_item_1line, tel);
		actv.setAdapter(adapter);
	}
}

(3)运行截图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值