AndroidListView、GridView----重新认识Android(7)

来源:互联网 发布:企业信息化软件有哪些 编辑:程序博客网 时间:2024/06/10 17:23
ListView:列表视图组件
主要就是将数据进行垂直列表显示
一般在使用的时候需要自定义每项显示的布局文件
作用:
1、显示数据
2、处理用户操作
三要素:
数据源Data
显示ListView
适配器Adapter


常用属性:
android:divider 分割线(颜色/图片)
android:dividerHeight 分割线高度



适配器:有数据和布局组成
ArrayAdapter:数组适配器
SimpleAdapter:简单适配器
SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
参数说明:
第一个参数:正文对象
第二个参数:对应的数据源集合对象
第三个参数:每行显示的布局文件
第四个参数:对应数据源中Map的键名的字符串数组
第五个参数:对应显示的布局文件中的UI组件ID
注意:第四和第五ID顺序要匹配



BaseAdapter:适配器类对象
日常开发使用最为广泛的
自定义适配器:自己创建类继承BaseAdapter
并且实现方法
必须实现的方法说明:
public int getCount() 返回数据源的大小
public long getItemId(int position) 返回指定位置的item控件id
public Object getItem(int position) 返回指定位置的数据
public View getView(int position,View convertView,ViewGroup parent) 返回指定位置的控件


使用步骤:
1、自定义类继承BaseAdapter
2、声明属性(一般Context,集合对象,布局过滤器对象),创建构造方法为属性赋值
3、实现4个方法--getView方法最为复杂
4、对应的页面创建自定义适配器类对象,设置到列表视图

布局过滤器对象的创建方式:
1、LayoutInflater.from(context);
2、(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

一、ListView优化:
1、建议设置为"match_parent"或固定值,避免重复计算ListView的高度
2、ViewHolder的使用,将findViewById()获取的控件封装起来,便于复用
优点:减少getView()时通过infalter加载布局的次数,减少内存开销,提高性能
缺点:若使用异步任务下载图片时,可能会出现图片错位问题,因为convertView的位置可能是第一个

View的tag属性:
同id属性一样,标识控件的唯一性
View.setTag(Object)设置控件的标签
View.getTag()获取控件的标签

View.setTag()+ViewHolder+convertView复用,减少布局加载和findViewBy的次数,降低的内存开销,提升性能

说到底优化也就是将能够复用的代码单独拿出来
每项加载时都是使用的同一个对象

二、ListView常用方法:
1、setOnItemClickListener
设置项点击事件

2、setOnItemLongClickListener
设置长按事件(2秒)
3、setOnScrollListener
设置滚动事件
1. onScrollStateChanged(AbsListView view, int scrollState):监听屏幕的滚动状态的变动情况

scrollState状态说明:
SCROLL_STATE_TOUCH_SCROLL(1):
表示正在滚动。当屏幕滚动且用户使用的触碰或手指还在屏幕上时为1
SCROLL_STATE_FLING(2) :
表示手指做了抛的动作(手指离开屏幕前,用力滑了一下,屏幕产生惯性滑动)。
SCROLL_STATE_IDLE(0) :
表示屏幕已停止。屏幕停止滚动时为0。

2. onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount):监听屏幕滚动的item的数量

AbsListView : 当前滚动的ListView控件
firstVisibleItem:当前窗口中能看见ListView的第一个列表项ID(从0开始)
visibleItemCount:当前窗口中能看见的ListView列表项的个数(小半个也算)
totalItemCount:ListView列表项的总数
GridView:网格视图
显示数据按列
常用属性:
android:numColumns 行的列数
android:columnWidth 每列的宽度
android:gravity 每一个单元在表格中的对齐方式
android:horizontalSpacing 列之间的水平间隔
android:verticalSpacing 行之间垂直间隔
android:stretchMode 伸展模式(缩放模式)
取值:
none 无缩放
ColumnWidth 根据列宽伸展
spacingWidth 根据空白伸展
spacingWidthUniform 均匀空白伸展


setAdapter(ListAdapter adapter):设置适配器
setOnScrollListener:设置滚动事件
setOnItemClickListener:设置点击事件
setOnItemLongClickListener:设置长按事件

0 0