android组件学习之AutoCompleteTextView

 

【实验目的】
    掌握AutoCompleteTextView的工功能及其使用方法;

【实验原理】
1.AutoCompleteTextView(自动填充文本框)
    AutoCompleteTextView用于实现允许用户输入一定的字符后,显示一个下拉菜单,供用户从中选择,当用户选择某个选项后,按用户选择自动填写文本框。如下图所示。
                             
图1
AutoCompleteTextView控件一般也是通过Adapter获取数据。

2.AutoCompleteTextView(自动填充文本框)常用XML属性


3.AutoCompleteTextView(自动填充文本框)的一般实现流程
(1)在布局文件中,添加AutoCompleteTextView控件;
(2)准备选择的数据;
(3)建立Adapter;
(4)将AutoCompleteTextView控件对象关联到Adapter。

【实验内容】
    

【实验步骤】
1.创建新项目
先建立一个空项目,如HelloWorld项目,然后进行以下修改。

2.UI设计
    修改主布局文件activity_main.xml,在其中添加AutoCompleteTextView控件、Button控件等,修改后的内容如下:

<?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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请输入查询关键字"
        android:textColor="#0000ff"/>
    <AutoCompleteTextView android:id="@+id/autoText"
        android:layout_below="@id/tv"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"/>
    <Button android:id="@+id/bt"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_below="@id/autoText"
        android:layout_alignParentRight="true"
        android:text="搜索" />

</RelativeLayout>

3.编写代码
修改主Activity的类文件MainActivity.java,修改后的内容如下:
package com.example.administrator.myautocomplete;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private static final String[] autoInfo=new String[]{"Android手机","Android实例","Android项目","Java编程","Java实例","Python机器学习","Python编程"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ArrayAdapter<String> myAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,autoInfo);

        final AutoCompleteTextView  autoText=(AutoCompleteTextView)findViewById(R.id.autoText);
        autoText.setAdapter(myAdapter);

        Button btn=(Button)findViewById(R.id.bt);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String showText=autoText.getText().toString();
                Toast.makeText(MainActivity.this,"你要搜索的是:"+showText,Toast.LENGTH_LONG).show();
            }
        });
    }
}

程序说明:
(1)准备选择数据    
    将选择数据放在一个数组中。
private static final String[] autoInfo=new String[]{"Android手机","Android实例","Android项目","Java编程","Java实例","Python机器学习","Python编程"};
(2)建立Adapter
建立一个ArrayAdapter,并将其与数据关联。
ArrayAdapter<String> myAdapter=new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line,
autoInfo);
此处使用系统自带的布局。
(3)获取AutoCompleteTextView控件对象,并将之与Adapter关联
final AutoCompleteTextView  autoText=(AutoCompleteTextView)findViewById(R.id.autoText);
        autoText.setAdapter(myAdapter);
(4)给Button设置一个监听器,当填入选择的数据后,点出Button弹出消息。
Button btn=(Button)findViewById(R.id.bt);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String showText=autoText.getText().toString();
                Toast.makeText(MainActivity.this,"你要搜索的是:"+showText,Toast.LENGTH_LONG).show();
            }
        });

4.效果验证
    编译运行,点击图片列表的某一项,可得到效果如图1所示。

android组件学习之AutoCompleteTextView