Android深入浅出系列之实例应用—具有自动提示的菜单应用AutoCompleteTextView和ArrayAdapter的使用

  前言

  我们在上百度搜索的时候,只需要输入一个字,就会在下面显示可能的关键字让你挑选,给我们带来了很大的方便,在Android里我们也可以实现此效果。

  

   思路

  在Android里我们需要使用AutoCompleteTextView对象和ArrayAdapter就能达到此效果。

  我们先在布局文件中放置一个AutoCompleteTextView控件,然后预先设置好字符串数组的内容,其次再将字符串数组放置到ArrayAdapter里,最后用AutoConpeleteTextView的setAdapter()方法把ArrayAdapter对象添加进去就可以完成了。

  实现步骤

  一:布局文件编写

  1.1 main.xml

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
     >
   <AutoCompleteTextView
    android:id="@+id/actv"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
   >
   </AutoCompleteTextView>

  </LinearLayout>

  二:代码文件编写

  2.1 MainActivity.java

  package com.menglin.autocompletetextviewandarray;

  import android.app.Activity;
  import android.os.Bundle;
  import android.widget.ArrayAdapter;
  import android.widget.AutoCompleteTextView;

  public class MainActivity extends Activity
  {
     //预先设置好字符串数组的内容
     private static final String[] strAutoArray = new String[]{"刘德华","刘诗诗","刘恺威","刘若英"};
     AutoCompleteTextView actv;
     @Override
     public void onCreate(Bundle savedInstanceState)
     {
        super.onCreate(savedInstanceState);
        //加载布局文件main.xml
        setContentView(R.layout.main);
        //得到AutoCompleteTextView对象
        actv = (AutoCompleteTextView)findViewById(R.id.actv);
        //创建ArrayAdapter对象,并将strAutoArray字符串数组作为参数传入,第二个参数是出现下拉列表框的样式,在这里我们采用系统的样式,第三个参数为自动提示的数据来源,在这里就是我们的字符串数组
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, strAutoArray); 
        //将ArrayAdapter对象添加到AutoCompleteTextView对象当中
        actv.setAdapter(adapter);
     }
  }

  运行效果如下

  

  

  扩展学习

  如果你觉得系统提供的下拉列表框的样式不是你想要的,你可以在layout目录下创建一个newstyle.xml来布局AutoCompleteTextView控件的下拉列表框的样式,把这句代码的第二个参数改为ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.newstyle, strAutoArray); 

posted @ 2011-12-22 15:05  David.Meng  阅读(3163)  评论(0编辑  收藏  举报