1. 高级控件与低级控件区别
高级控件需要适配器 而低级不用
2. 适配器种类
数组适配器 ArrayAdapter
new ArrayAdapter<String>(this,R.layout.actv_style, names);
简单适配器 SimpleAdapter(放图片)
也叫“并不简单的简单适配器”^_^
new SimpleAdapter(this(上下文),data3(数据源),R.layout.actv_style(项资源文件),new String[]{"img","desc"}(数据源键),new int[]{R.id.iv_main_img,R.id.iv_main_desc}(项资源里面id跟前面对应));
核心:
1、数组适配器
String[] AutoCompleteTextView 项资源
List<Dept> Spinner 项资源
2、获取下拉框的值
3、简单适配器
List<Map> 数据源都是map数据 项资源
3.高级控件使用步骤:
Spinner(下拉框控件)
自动提示文本框 AutoCompleteTextView(单一提示) 拿一个控件来说
首先上面要定义控件id 然后定义一个数据源 一个适配器
3.1 获取数据
3.2 创建适配器
3.3 绑定适配器 以下三点都写在里面 简单适配器跟数组适配器差不多多了两个参数上面有写到 下面就只是数组适配器绑定具体方法。
假如拿到下拉框值 option select=(option)sp_main_xia.getselectedIdItem();//选中那一项
吐司框 弹消息Toast.makeText(this,select.getvalue(),Toast.l.......);//中间是拿到上面选中的value值
package com.example.t216_04;
public class MainActivity extends AppCompatActivity {
private String[] data1;//定义数据源
private ArrayAdapter dapt1;//定义适配器
private AutoCompleteTextView at_main_text;//定义控件id
private List<Option> data2=new ArrayList<>();
private ArrayAdapter dapt2;
private Spinner at_main_xia;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
data1=new String[]{ "愤怒的小鸟", "汤姆猫", "落汤鸡", "牛牛", "哈巴狗", "神龙", "烤鸭",
"小象", "美人鱼", "九尾狐" };//数据源
dapt1=new ArrayAdapter(this,R.layout.at_main_temp1,data1);//创建适配器
at_main_text.setAdapter(dapt1);//把适配器里面的东西绑定给这个控件
stat1();
dapt2=new ArrayAdapter(this,R.layout.at_main_temp1,data2);
at_main_xia.setAdapter(dapt2);
}
private void stat1() {
List<Map<String,String>> list=new ArrayList<>();
Map<String,String> map;
for (int i=0;i<=5;i++){
map=new HashMap<>();
map.put("id",i+"");
map.put("name","小"+i+"啊");
list.add(map);
}
for (Map<String,String> map1:list){
data2.add(new Option(map1.get("id"),map1.get("name")));
}
}
private void initView() {//初始化一下这个控件
at_main_text=findViewById(R.id.at_main_text);
at_main_xia=findViewById(R.id.s_main_xia);
}
}