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

    xiaoxiao2021-04-18  60

    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:设置长按事件
    转载请注明原文地址: https://ju.6miu.com/read-674920.html

    最新回复(0)