自动提示框和下拉列表(高级控件)

  1. 高级控件与低级控件区别
    是否使用适配器

  2. 适配器种类和作用
    2.1 种类
    数组适配器 ArrayAdapter
    new ArrayAdapter(this,R.layout.actv_style, names);

    简单适配器 SimpleAdapter
    也叫“并不简单的简单适配器”^_^

    自定义适配器

    2.2 作用
    桥梁
    展示

  3. 高级控件使用步骤
    3.1 获取数据
    3.2 创建适配器
    3.3 绑定适配器

  4. 自动提示文本框
    4.1 AutoCompleteTextView(单一提示)
    android:completionThreshold=”1”

    4.2 MultiAutoCompleteTextView(多次提示)–作业
    //设置多次提示时,设置分隔符方法
    Tokenizer t = new MultiAutoCompleteTextView.CommaTokenizer();
    mactv_main.setTokenizer(t);

    4.3 两种自动提示文本框的异同
    AutoCompleteTextView:支持基本的自动完成功能,适用在各种搜索功能中,并且可以根据自己的需求设置他的默认显示数据
    MultiAutoCompleteTextView: 可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配。
    可用在发短信,发邮件时选择联系人这种类型当中。

  5. 下拉框
    Spinner

    素材
    String[] names = { “愤怒的小鸟”, “汤姆猫”, “落汤鸡”, “牛牛”, “哈巴狗”, “神龙”, “烤鸭”,
    “小象”, “美人鱼”, “九尾狐” };
    int[] images = { R.drawable.bird, R.drawable.cat, R.drawable.chicken,
    R.drawable.cow, R.drawable.dog, R.drawable.dragon,
    R.drawable.duck, R.drawable.elephant, R.drawable.fish,
    R.drawable.fox };

    事件监听
    AdapterView.OnItemSelectedListener

核心:
1、数组适配器
String[] AutoCompleteTextView 项资源
List Spinner 项资源
2、获取下拉框的值
3、简单适配器
List 项资源

MainActivity.java
这里写代码片
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.ImageView;
import android.widget.MultiAutoCompleteTextView;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {
    //demo1
    private  String[] data1;
    private AutoCompleteTextView act_main_act1;
    //定义一个适配器
    private ArrayAdapter adapter1;


    //下拉框数组适配器 demo2
    private List

//添加这个SemicolonTokenizer类到项目中,并将macTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());改为macTextView.setTokenizer(new SemicolonTokenizer(';'));即可
//demo4中java 中的SemicolonTokenizer类
这里写代码片
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
import android.widget.MultiAutoCompleteTextView;

public class SemicolonTokenizer implements MultiAutoCompleteTextView.Tokenizer {
    private char charS;
    private String mSTring;

    public SemicolonTokenizer(char charS) {
        this.charS = charS;
        mSTring = String.valueOf(charS);
    }

    public int findTokenStart(CharSequence text, int cursor) {
        int i = cursor;

        while (i > 0 && text.charAt(i - 1) != charS) {
            i--;
        }
        while (i < cursor && text.charAt(i) == ' ') {
            i++;
        }

        return i;
    }

    public int findTokenEnd(CharSequence text, int cursor) {
        int i = cursor;
        int len = text.length();

        while (i < len) {
            if (text.charAt(i) == charS) {
                return i;
            } else {
                i++;
            }
        }

        return len;
    }

    public CharSequence terminateToken(CharSequence text) {
        int i = text.length();

        while (i > 0 && text.charAt(i - 1) == ' ') {
            i--;
        }

        if (i > 0 && text.charAt(i - 1) == charS) {
            return text;
        } else {
            if (text instanceof Spanned) {
                SpannableString sp = new SpannableString(text + mSTring);
                TextUtils.copySpansFrom((Spanned) text, 0, text.length(), Object.class, sp, 0);
                return sp;
            } else {
                return text + mSTring;
            }
        }
    }
这里写代码片
res--->layout-->xml


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

demo2
   <AutoCompleteTextView
       android:id="@+id/act_main_act1"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="单一提示"/>



   <Spinner
       android:id="@+id/sp_main_sp1"
       android:layout_width="match_parent"
       android:layout_height="wrap_content">Spinner>

demo4
    <Spinner
        android:id="@+id/sp_main_sp2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">Spinner>

demo3
    <MultiAutoCompleteTextView
        android:id="@+id/mact_main_mact1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="多次提示"/>
LinearLayout>

你可能感兴趣的:(自动提示框和下拉列表(高级控件))