1、高级控件展示
2、高级控件与低级控件区别
是否使用适配器
- 适配器种类和作用
3.1 种类
数组适配器 ArrayAdapter
new ArrayAdapter(this,R.layout.actv_style, names);
3.2 简单适配器 SimpleAdapter
也叫“并不简单的简单适配器”
3.3 作用
桥梁、 展示
- 高级控件使用步骤
3.1 获取数据
3.2 创建适配器
3.3 绑定适配器
package com.example.myapplication07;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
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 {
private String[] data1;//获取数据源 先定义一个数组
private ArrayAdapter adapter1;//创建适配器 先定义一个适配器
private AutoCompleteTextView actv_main_content;//绑定适配器 定义绑定展示的页面数据
private List<Option> data2=new ArrayList<>();
private ArrayAdapter adapter2;
private Spinner spacer_main_img;
private List<Map<String,Object>> data3=new ArrayList<>();
private SimpleAdapter adapter3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intiVew();//调用
data1 = new String[]{"愤怒的小鸟", "汤姆猫", "落汤鸡", "牛牛", "哈巴狗", "神龙", "烤鸭",
"小象", "美人鱼", "九尾狐"}; //初始化数据
adapter1 = new ArrayAdapter(this,R.layout.actv_main_item1,data1);// 初始化适配器
actv_main_content.setAdapter(adapter1); //绑定适配器
loadData2();
adapter2 = new ArrayAdapter(this,R.layout.actv_main_item1,data2);
spacer_main_img.setAdapter(adapter2);
loadData3();
adapter3 = new SimpleAdapter(this,data3,R.layout.spinner_main_item1,new String[]{"img","desc"},new int[]{R.id.iv_main_item_img,R.id.tv_main_item1_desc});
spacer_main_img.setAdapter(adapter3);
spacer_main_img.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Map<String,Object> itemAtPosition = (Map<String, Object>) adapterView.getItemAtPosition(i);
Toast.makeText(MainActivity.this,itemAtPosition.toString(),Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
private void loadData3() {
List<Book> list = new BookDAO().list();
Map<String,Object> map;
for (Book book: list) {
map = new HashMap<>();
map.put("img",book.getImage());
map.put("desc",book.getName());
data3.add(map);
}
}
private void loadData2() {
//http从Java端获取数据
List<Map<String,String>> list = new ArrayList<>();
Map<String,String> map;
for (int i=0; i<6; i++){
map =new HashMap();
map.put("deptId",i+"");
map.put("deptName","公关"+i+"部门");
list.add(map);
}
for (Map<String,String> map1 : list){
data2.add(new Option(map1.get("deptId"),map1.get("deptName")));
}
}
//初始化控件
private void intiVew(){
//初始化定义绑定展示的页面数据
actv_main_content=findViewById(R.id.actv_main_content);
spacer_main_img=findViewById(R.id.spacer_main_img);
}
public void getContent(View view) {
Option selectedItem = (Option) spacer_main_img.getSelectedItem();
Toast.makeText(this, selectedItem.getValue(), Toast.LENGTH_SHORT).show();
}
}
- 自动提示文本框
4.1 AutoCompleteTextView(单一提示)
android:completionThreshold=“1”
<!--自动提示框(单一提示)-->
<AutoCompleteTextView
android:layout_width="match_parent"
android:id="@+id/actv_main_content"
android:hint="请选择"
android:layout_height="wrap_content" />
<Spinner
android:layout_width="match_parent"
android:id="@+id/spacer_main_img"
android:layout_height="wrap_content"></Spinner>
<Button
android:layout_width="match_parent"
android:text="获取value值"
android:onClick="getContent"
android:layout_height="wrap_content" />
4.3 两种自动提示文本框的异同
AutoCompleteTextView:支持基本的自动完成功能,适用在各种搜索功能中,并且可以根据自己的需求设置他的默认显示数据
MultiAutoCompleteTextView: 可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配。
可用在发短信,发邮件时选择联系人这种类型当中。
- 下拉框
Spinner
事件监听
AdapterView.OnItemSelectedListener
核心:
1、数组适配器
String[] AutoCompleteTextView 项资源
List Spinner 项资源
2、获取下拉框的值
3、简单适配器
List