04 高级控件总结
1,Spinner
>概念;下拉菜单控件 默认显示当前选择的项(第一次展示集合中第一条数据)
>属性:
android:entries="@array/books" 展示数据 (note:提前知道数据是什么 )
android:spinnerMode="dropdown" spinner 样式
dropdown:下拉列表 设置popupBackground 每一项的背景颜色
dialog:弹出框 设置prompt 标题 调用的是Values/string.xml/string
>监听:setOnItemSelectedListener
2,什么是Adapter?
>适配器 将数据转换成控件识别的形式
>子类:BaseAdapter(下周) ArrayAdapter SimpleAdapter
3,ArrayAdapter的使用?
>一般用于只有String类型数据 展示到TextView上
>如果三个参数的ArrayAdapter item布局的根节点 必须是TextView
如果跟节点不是TextVIew 三个参数的会报错 使用四个参数的ArrayAdapter
4,SimpleAdapter的使用:
>处理复杂的数据 (带有图片和文字)
Context context: 上下文
List<? extends Map<String, ?>> data: 数据源
int resource: 布局
String[] from: 数据源中带key的数组
int[] to : 布局资源中id的数组
note:from里的key和to里的控件id 是对应关系
5,AutoCompleteTextView
>自动索引的EditText(文本输入框)
> 默认输入俩个字符 才开始索引
android:completionThreshold="1" 输入几个字符开始索引
6,addTextChangedListener()的用法?
>
//文本发生变化的监听 可以对EditText操作
autoView.addTextChangedListener(new TextWatcher() {
/**
* 改变文本时调用
* CharSequence s:变化之后的文本
* int start:变化的起点 从哪里开始改变
* int before: 相比较文本变化 添加没有改变0 删除改变
* int count:相比较文本变化 添加有值 删除没有改变0
*/
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
Log.e("AAA", "==onTextChanged==s:"+s+"=start:"+start+"=before:"+before+"=count:"+count);
}
/**
* 改变文本之前调用
* CharSequence s:变化之前的文本
* int start:变化之前的文本下标
* int count:相比较文本的变化 添加不变的0 删除是改变:删除几个展示结果
* int after:相比较文本的变化 如果添加是有值 如果删除不变 0
*/
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
Log.e("AAA", "==beforeTextChanged==s:"+s+"=start:"+start+"=count:"+count+"=after:"+after);
}
/**
* 改变文本之后调用
* Editable s:改变之后的文本
*/
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
Log.e("AAA", "==afterTextChanged==s:"+s);
}
});
/**
* 08-25 15:23:44.334: E/AAA(12812): ==beforeTextChanged==s:=start:0=count:0=after:1
08-25 15:23:44.334: E/AAA(12812): ==onTextChanged==s:g=start:0=before:0=count:1
08-25 15:23:44.334: E/AAA(12812): ==afterTextChanged==s:g
08-25 15:23:45.904: E/AAA(12812): ==beforeTextChanged==s:g=start:1=count:0=after:1
08-25 15:23:45.904: E/AAA(12812): ==onTextChanged==s:gh=start:1=before:0=count:1
08-25 15:23:45.904: E/AAA(12812): ==afterTextChanged==s:gh
08-25 15:23:47.824: E/AAA(12812): ==beforeTextChanged==s:gh=start:2=count:0=after:1
08-25 15:23:47.824: E/AAA(12812): ==onTextChanged==s:ghj=start:2=before:0=count:1
08-25 15:23:47.824: E/AAA(12812): ==afterTextChanged==s:ghj
08-25 15:23:49.164: E/AAA(12812): ==beforeTextChanged==s:ghj=start:2=count:1=after:0
08-25 15:23:49.164: E/AAA(12812): ==onTextChanged==s:gh=start:2=before:1=count:0
08-25 15:23:49.164: E/AAA(12812): ==afterTextChanged==s:gh
08-25 15:23:49.694: E/AAA(12812): ==beforeTextChanged==s:gh=start:1=count:1=after:0
08-25 15:23:49.694: E/AAA(12812): ==onTextChanged==s:g=start:1=before:1=count:0
08-25 15:23:49.694: E/AAA(12812): ==afterTextChanged==s:g
*/