一、 高级控件使用步骤
1 、获取数据
2 、创建适配器
3 、绑定适配器
二、自动提示文本框
1 、AutoCompleteTextView(单一提示)
android:completionThreshold=“1”
2 、MultiAutoCompleteTextView(多次提示)
//设置多次提示时,设置分隔符方法
Tokenizer t = new MultiAutoCompleteTextView.CommaTokenizer();
mactv_main.setTokenizer(t);
3、 两种自动提示文本框的异同
AutoCompleteTextView:支持基本的自动完成功能,适用在各种搜索功能中,并且可以根据自己的需求设置他的默认显示数据
MultiAutoCompleteTextView: 可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配。
可用在发短信,发邮件时选择联系人这种类型当中。
public class MainActivity extends AppCompatActivity {
// 自动补全
private String[] data1;
private ArrayAdapter<String> adapter1;
private AutoCompleteTextView act_main_act1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
act_main_act1=this.findViewById(R.id.act_main_act1);
// 3.1 获取数据
data1=new String[] { "愤怒的小鸟", "汤姆猫", "落汤鸡", "牛牛", "哈巴狗", "神龙", "烤鸭",
"小象", "美人鱼", "九尾狐" };
// 3.2 创建适配器
adapter1=new ArrayAdapter<String>(this,R.layout.act_main_item1,data1);
// 3.3 绑定适配器
act_main_act1.setAdapter(adapter1);
}
}
三、两种自动提示文本框的异同
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
public class MainActivity extends AppCompatActivity {
// 下拉框
private List<Option> data2;
private ArrayAdapter<Option> adapter2;
private Spinner sp_main_sp1;
// 下拉图片
private List<Map<String,Object>> data3;
private SimpleAdapter adapter3;
private Spinner sp_main_sp2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sp_main_sp1=this.findViewById(R.id. sp_main_sp1);
sp_main_sp2=this.findViewById(R.id. sp_main_sp2);
// 下拉框
data2=loadData2();
adapter2=new ArrayAdapter<Option>(this,R.layout.act_main_item1,data2);
sp_main_sp1.setAdapter(adapter2);
sp_main_sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
Option selectedItem= (Option) adapterView.getSelectedItem();
Toast.makeText(MainActivity.this,selectedItem.getHtml(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
// 下拉图片
data3=loadData3();
adapter3=new SimpleAdapter(this,data3,R.layout.sp_main_item2,new String[]{"name","image"},new int[]{R.id.tv_main_item_tv1,R.id.iv_main_item_iv1});
sp_main_sp2.setAdapter(adapter3);
}
private List<Map<String,Object>> loadData3() {
List<Book> list=new BookDAO().list();
List<Map<String,Object>> mapList=new ArrayList<>();
Map<String,Object> map=null;
for (Book book : list) {
map=new HashMap<>();
map.put("name",book.getName());
map.put("image",book.getImage());
mapList.add(map);
}
return mapList;
}
private List<Option> loadData2() {
List<Book> list= new BookDAO().list();
List<Option> optionList=new ArrayList<>();
for (Book book:list){
optionList.add(new Option(book.getId()+"",book.getName()));
}
return optionList;
}
}