1.AndroidStudio 的高级控件 配适器
- 高级控件与低级控件区别
是否使用适配器
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: 可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配。
可用在发短信,发邮件时选择联系人这种类型当中。
例图:
代码如下:
activity_main.xml里面写: 设置布局和ID
act_main_item.xml 用来展示效果用的
MainActity.java里面写java代码:用来重写方法实例化对象赋值
5. 下拉框
Spinner
实现图片和名字一起的效果需要的文件:
Book实体类代码为:
package com.example.t211_a07;
public class Book {
private Integer id;
private String name;
private Integer image;
public Book() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getImage() {
return image;
}
public void setImage(Integer image) {
this.image = image;
}
}
BookDao文件的代码为:
package com.example.t211_a07;
import java.util.ArrayList;
import java.util.List;
public class BookDAO {
public List list() {
List bookList = new ArrayList();
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};
Book b = null;
for (int i = 0; i < names.length; i++) {
b = new Book();
b.setId(i + 1);
b.setName(names[i]);
b.setImage(images[i]);
bookList.add(b);
}
return bookList;
}
}
MainActivity的代码为:
package com.example.t211_a07;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private String[] data1;
private ArrayAdapter adapter1;
private AutoCompleteTextView act_main_content;
private Spinner sp_main_sel;
private Spinner sp_main_sel2;
private ArrayAdapter adapter2;
private List<Option> data2;
private SimpleAdapter adapter3;
private List<Map<String,Object>> data3;
public MainActivity() {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
act_main_content=findViewById(R.id.act_main_content);
sp_main_sel =findViewById(R.id.sp_main_sel);
sp_main_sel2 =findViewById(R.id.sp_main_sel2);
//获取数据
data1=new String[]{ "愤怒的小鸟", "汤姆猫", "落汤鸡", "牛牛", "哈巴狗", "神龙", "烤鸭",
"小象", "美人鱼", "九尾狐" };
//创建适配器 把数据绑定到项资源里面
adapter1=new ArrayAdapter(this,R.layout.act_main_item,data1);
//绑定适配器
act_main_content.setAdapter(adapter1);
data2=loadData2();
//创建适配器 把数据绑定到项资源里面
adapter2=new ArrayAdapter(this,R.layout.act_main_item,data2);
//绑定适配器
sp_main_sel.setAdapter(adapter2);
data3=loadData3();
adapter3 =new SimpleAdapter(this,data3,R.layout.sp_main_item2,new String[]{"image","name"},new int[]{R.id.sp_main_item_img,R.id.tv_main_item_content});
sp_main_sel2.setAdapter(adapter3);
}
private List<Map<String,Object>> loadData3() {
List<Book> books=new BookDAO().list();
List<Map<String,Object>> maps=new ArrayList<>();
for (Book book:books){
Map map=new HashMap();
map.put("image",book.getImage());
map.put("name",book.getName());
maps.add(map);
}
return maps;
}
private List<Option> loadData2() {
List<Book> books=new BookDAO().list();
List<Option> sels=new ArrayList<>();
for (Book book:books){
sels.add(new Option(book.getId()+"",book.getName()));
}
return sels;
}
}
Option的代码为:
package com.example.t211_a07;
public class Option {
private String value;
private String html;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getHtml() {
return html;
}
public void setHtml(String html) {
this.html = html;
}
public Option(String value, String html) {
this.value = value;
this.html = html;
}
@Override
public String toString() {
return html;
}
}
act_main_item.xml代码为:
<?xml version="1.0" encoding="utf-8"?>android:layout_width=“match_parent”
android:layout_height=“wrap_content”>
activity_mian.xml代码为:
<?xml version="1.0" encoding="utf-8"?><Spinner
android:id="@+id/sp_main_sel"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</Spinner>
<Spinner
android:id="@+id/sp_main_sel2"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</Spinner>
sp_main_item2.xml代码为:
<?xml version="1.0" encoding="utf-8"?><ImageView
android:id="@+id/sp_main_item_img"
android:layout_width="80dp"
android:layout_height="wrap_content" />
效果图为:
素材
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