1.高级控件与低级控件区别:
是否使用适配器,而AutoCompleteTextView是一个高级控件 ,需要加上适配器使用
2.适配器种类和作用
数组适配器 ArrayAdapter
简单适配器 SimpleAdapter
自定义适配器
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: 可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配。
可用在发短信,发邮件时选择联系人这种类型当中。
扫描二维码关注公众号,回复:
3662244 查看本文章
5.代码示例
package com.example.a09;
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.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 Spinner sp_main_sp1;//①下拉框
private List<Option> data1;
private ArrayAdapter adapter;
private Spinner sp_main_sp2;//②下拉框
private List<Map<String,Object>> data2;
private SimpleAdapter adapter2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sp_main_sp1 = findViewById(R.id.sp_main_sp1);
sp_main_sp2 = findViewById(R.id.sp_main_sp2);
data1 = listData1();
adapter = new ArrayAdapter(this,R.layout.act_mian_item1,data1);
sp_main_sp1.setAdapter(adapter);
sp_main_sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Option option = (Option) parent.getSelectedItem();
Toast.makeText(MainActivity.this, option.getHtml(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
data2 = listData2();
//创建适配器
adapter2 = new SimpleAdapter(this,data2,R.layout.sp_main_item2,new String[]{"image","name"},new int[]{ R.id.iv_main_iv1,R.id.it_main_it1});
//绑定适配器
sp_main_sp2.setAdapter(adapter2);
}
//获取数据
private List<Map<String,Object>> listData2() {
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> listData1() {
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;
}
}