高级控件与低级控件区别
是否使用适配器
适配器种类和作用
2.1 种类
数组适配器 ArrayAdapter
new ArrayAdapter(this,R.layout.actv_style, names);
简单适配器 SimpleAdapter
也叫“并不简单的简单适配器”^_^
自定义适配器
2.2 作用
桥梁
展示
高级控件使用步骤
3.1 获取数据
3.2 创建适配器
3.3 绑定适配器
自动提示文本框
4.1 AutoCompleteTextView(单一提示)
android:completionThreshold=”1”
4.2 MultiAutoCompleteTextView(多次提示)–作业
//设置多次提示时,设置分隔符方法
Tokenizer t = new MultiAutoCompleteTextView.CommaTokenizer();
mactv_main.setTokenizer(t);
4.3 两种自动提示文本框的异同
AutoCompleteTextView:支持基本的自动完成功能,适用在各种搜索功能中,并且可以根据自己的需求设置他的默认显示数据
MultiAutoCompleteTextView: 可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配。
可用在发短信,发邮件时选择联系人这种类型当中。
下拉框
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>