通过Google上网搜索时,只要输入几个文字,就会显示相近的关键字让你挑选,而这种效果其实在Android中是非常容易达到的。事实上,AndroidAutoCompleteTextView Widget,只要搭配ArrayAdapter就能设计出类似Google搜索提示的效果。

本范例先在Layout当中布局一个AutoCompleteTextView Widget,然后通过预先设置好的字符串数组,将此字符串数组放入ArrayAdapter,最后利用AutoCompleteTextView.setAdapter方法,就可以让AutoCompleteTextView Widget具有自动完成提示的功能。例如,只要输入ab,就会自动带出包含ab的所有字符串列表。

范例程序

src/irdc.ex04_13/EX04_13.java

本范例程序主要示范AutoCompleteTextView用法,再次使用到ArrayAdapter,只要是有下拉菜单的项目,都必须使用到ArrayAdapter对象。此外,将ArrayAdapter添加AutoComplete TextView对象中,所使用的方法为setAdapter,当中传输唯一的参数类型即为字符串类型的ArrayAdapter

/* import程序略 */

public class EX04_13 extends Activity

{

private static final String[] autoStr = new String[]

{ "a", "abc", "abcd", "abcde" };

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

/*加载main.xml Layout */

setContentView(R.layout.main);

/* new ArrayAdapter对象并将autoStr字符串数组传入 */

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,

android.R.layout.simple_dropdown_item_1line, autoStr);

/* findViewById()取得AutoCompleteTextView对象 */

AutoCompleteTextView myAutoCompleteTextView =

(AutoCompleteTextView) findViewById(R.id.myAutoCompleteTextView);

/* ArrayAdapter添加AutoCompleteTextView对象中 */

myAutoCompleteTextView.setAdapter(adapter);

}

}

扩展学习

有个类似AutoCompleteTextView的对象,称为MultiAutoCompleteTextView,它继承了Auto CompleteTextView,差别在于它可以在输入框一直增加新的选择值,其编写方式也有些不同,一定要setTokenizer,否则会出现错误,以下范例是传入CommaTokenizer类,结果会将原本选择框里的值往后加逗号及空白。

package irdc.ex04_13;

import android.app.Activity;

import android.os.Bundle;

import android.widget.ArrayAdapter;

import android.widget.AutoCompleteTextView;

import android.widget.MultiAutoCompleteTextView;

public class EX04_13 extends Activity

{

private static final String[] autoStr = new String[]

{ "a", "abc", "abcd", "abcde" };

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

/*加载main.xml Layout */

setContentView(R.layout.main_1);

/* new ArrayAdapter对象并将autoStr字符串数组传入 */

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,

android.R.layout.simple_dropdown_item_1line, autoStr);

/* findViewById()取得MultiAutoCompleteTextView对象 */

MultiAutoCompleteTextView myAutoCompleteTextView =

(MultiAutoCompleteTextView)

findViewById(R.id.myAutoCompleteTextView);

/* ArrayAdapter添加AutoCompleteTextView对象中 */

myAutoCompleteTextView.setAdapter(adapter);

myAutoCompleteTextView.setTokenizer

(new MultiAutoCompleteTextView.CommaTokenizer());

}

}

更多相关文章

  1. android内存分析工具- MAT的初识(1)
  2. 初步理解Android(安卓)Fragment
  3. Android智能指针SP WP使用方法介绍
  4. Android之Intent原理
  5. Android中Context用法详解
  6. Android中Parcelable的使用
  7. Android(安卓)开发必读:如何成为一名优秀的Android开发者
  8. Android服务注册完整过程源码分析
  9. Android(安卓)使用Parcelable传递对象

随机推荐

  1. 几种RIA技术介绍
  2. C#中的正则表达式如何验证中文字符的实例
  3. Asp.Net用控件实现本地图片的显示
  4. 理解ASP.NET中多层架构
  5. C#关于验证身份证号码的实例分析(正确性)
  6. 比较.NET中接口与类的区别
  7. C#如何实现添加和修改以及删除PDF书签的
  8. C#中关于Infinity与NaN的简单介绍
  9. Asp.NET页面事件加载的顺序是什么样的
  10. 关于.NET后台定时服务框架的简单介绍