AdapterView会展示大量相同数据类型的数据!例如:列表、下拉框等等
1.Spinner
- 是一个AdapterView,无法自身独立去显示内容,需要一个Adapter
- Spinner的使用:
- 在xml中声明Spinner
- 设置Spinner特有属性
- 思考三要素获取问题
- 要素1:查找AdapterView,使用findViewById
- 要素2:查找数据,建议使用集合!数据来源为数据库、网络请求、本地数据
- 要素3:Adapter的选择
- ArrayAdapter
当数据类型是一个数组或者一个集合,内部不是实体类,只是字符串类型的时候!
ArrayAdapter也只最简单的Adapter,通常用来适配,简单的字符串数据! - SimpleAdapter
用于本地数据图文混排! - CursorAdapter
用于显示数据库数据的Adapter - BaseAdapter
基础Adapter,完全自定义Adapter,他可以展示任何数据!但是需要自己实现Adapter的一些方法!写法复杂
- ArrayAdapter
Adapter的构造方法
new ArrayAdapter(this,android.R.layout.simple_list_item_1, data);- Context:上下文对象
- 单条显示布局:android.R.layout.simple_list_item_1(TextView)
- Data:数据,推荐使用集合
Adapter和AdapterView相互关联
- AdapterView.setAdapter(Adapter);
Spinner监听事件
- Spinner不能设置setOnItemClickListener,使用:setOnItemSelectedListener代替
setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
// 选中第几个时调用的方法
// 参数1:patent调用的那个Spinner
// 参数2:view单条视图 TextView
// 参数3:position 选中的位置 位置的范围是0到size-1
// 参数4:在这个情况下 id==position //Adapter会给单条视图添加一个唯一的id,正好position也不会重复
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
// 当数据清空的时候调用此回调方法
// 参数1:parent触发的AdapterView
}
清空数据或者添加数据
- 清空数据:adapter.clear()数据类型不能是数组!
- 添加数据:添加数据的时候,所要添加的集合必须和Adapter内部的集合是同一对象!
- 正确的添加姿势:
- adapter.add();
- adapter.addAll();
- 数据源是通过构造方法传递,这种情况,可以直接往数据源集合中直接添加数据,添加数据以后记得使用notifyDataSetChanged()刷新Adapter
- 常用属性
- android:entries引用字符串数组资源,Spinner会直接显示。如果使用此属性,代表显示内容写死了!
- android:spinnerMode中dialog对话框,dropdown下拉列表
- android:prompt提示属性
- 注意:
- Spinner的模式必须是dialog
- 引用的字符串必须是values-strings文件夹下的资源!
- 注意:
- android:popupBackground弹出框的背景
- 注意
- Spinner的模式必须是dropdown
- 注意
- android:dropDownVerticalOffset当spinnerMode=”dropdown”时,下拉的项目选择窗口在垂直方向相对于Spinner窗口的偏移量
- android:dropDownWidth当spinnerMode=”dropdown”时,设定下拉框的宽度
- android:gravity设置当前选择的项目的对齐方式
2.AutoCompleteTextView
AutoCompleteTextView是自动补全框,继承EditText,输入时候会弹出相关的建议框!选中,可以快速的补全输入内容,继承于EditText,EditText继承于TextView,它不是AdapterView,但是它需要一个Adapter进行数据匹配
使用:
- xml中声明控件
- Activity初始化控件
- 封装数据到集合中,数据来源:数据库、网络、本地
- 创建Adapter
- Adapter和控件相互结合
- 输入监听事件
属性:
- android:completionThreshold=”1”输入第几个字母开始提示
- android:popupBackground=”#00ffff”建议框的背景(颜色和图片)
- android:completionHint=”请输入!!”在建议框下面的提示
- android:dropDownHorizontalOffset=”-100dp”
- android:dropDownVerticalOffset=”100dp”控制建议框水平和垂直偏移!! 可以写负值!!
- android:dropDownAnchor=”@+id/button”以某个控件为锚点,弹出框显示在锚点控件的下面!!
3.ScrollView
- ScrollView垂直滚动布局
- 注意:ScrollView,垂直滚动布局,它只能有一个直接的子控件或者布局
- 使用:内部定义一个垂直的LinearLayout高自适应!在LinearLayout的内部添加控件!
- HorizontalScrollView水平滚动的布局
- 注意:HorizontalScrollView水平滚动的布局,它只能有一个直接的子控件或者布局
- 使用:内部定义一个水平排列的LinearLayout,宽自适应,在LinearLayout的内部添加控件!
- 常用属性:
- android:fadeScrollbars=”false”是否在未滑动时显示,false一致显示
- android:scrollbars=”none”去掉滚动条
4.EditText输入监听
- addTextChangedListener(new TextWatcher())
- afterTextChanged(Editable s) 监听输入后的字符串
- 用途:
- 可以动态判断输入字符串的长度,做反馈功能,文本长度限制和监听!!
- 可以动态控制文本输入的内容!!利用try catch
5.RatingBar
- 评星控件
- 常用属性:
- android:numStars=”6”星星总数
- android:rating=”2.5”设置初始星星数量
- 评星监听事件:
ratingBar: 当前ratingBar
rating : 当前评星数
fromUser : 是否是用户手动改变
setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
// TODO Auto-generated method stub
}
});
6.ProgressBar
- 进度条,有很多种,圆形和条形
- 作用: 可以有效的提高用户体验度!!当进行耗时操作,可以使用进度条,给用户进行良好提示!!
- 使用:
- layout中声明控件 ProgressBar
- 设置ProgressBar的属性
- 在Activity进行操作!!
- 常用方法:
- setProgress()设置当前的进度值
- setSecondaryProgress()设置第二层进度值
7.SeekBar
- 继承ProgressBar,可拖拽的进度条
设置监听事件:
setOnSeekBarChangeListener(new
OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
//此方法在用户拖动进度条手松开时调用
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
//此方法在用户拖动进度条手按下时调用
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// TODO Auto-generated method stub
//此方法当进度条进度改变时调用
//其中参数意义为
//seekBar: 当前的SeekBar
//progress: 改变后的进度值
//fromUser: 是否是用户拖拽改变
}
});
8.MediaPlayer使用
- 实例化:
- player = MediaPlayer.create(Context context,int resID);
context: 上下文对象
resID : 歌曲资源id
- player = MediaPlayer.create(Context context,int resID);
- 常用方法
- player.pause(); //暂停
- player.start(); //开始播放
- player.stop(); //停止
- player.isPlaying(); //是否正在播放
- player.prepare(); //进入准备状态
- player.seekTo(int); //跳到指定的位置
- player.getDuration(); //当前音乐的长度
- player.getCurrentPosition()//获取当前播放的长度
- player.release(); //释放资源
9.res资源获取
- 根据id 去res资源中获取具体的资源
- 获取res资源管理器
- 获取具体的资源 get资源类型(R.资源类型.资源名)