ListView技巧

摘要:
1) 当重用convertViewListView来显示项目时,它将首先检查回收站中是否有缓存的项目。如果找到缓存项,ListView将直接重用它们,并将它们作为参数传递给适配器的getView方法。参数名称为convertView。因此,如果convertView不为空,则表示回收站中存在可重复使用的项目,因此无需创建新项目。此视图重用方法适用于单个项目视图

1)复用convertView
ListView在需要显示Item的时候,会首先检查回收站里是否有缓存的item,如果发现有缓存的item,ListView会直接复用它,把它作为参数传递给Adapter的getView方法,参数名为convertView。
所以如果convertView不为空,表明回收站中存在可以复用的Item,就不需要在创建新的Item了。
这种View复用的方式适用于单一Item视图和多种Item视图的情况,在之前的例子中已经提到过,可以参考以前的讲解。

2)使用ViewHolder
在Android中,在操作一个控件的时,首先需要通过findViewById从控件树中找到它,然后才能对它进行操作。而对于ListView中的Item布局文件的解析式重复性的,因此每次都执行findViewById方法非常耗时。
常用的做法是定义一个ViewHolder类来缓存查找后的控件引用,这样只需要在初始化的时候查找一次,以后对控件的操作都可以直接从ViewHolder中获取。
其中,通过setTag和getTag的方式来存储和获取ViewHolder。省去了每次执行findViewById的时间

3)刷新ListView的数据
Adapter处于ListView和数据的中间,当有数据变化时需要Adapter通知ListView刷新显示的内容。Adapter 提供了notifyDataSetChanged()和notifyDataSetInvalidated()两个方法通知ListView刷新。当有数据更新时调用notifyDataSetChanged方法,当数据完全无效时调用notifyDataSetInvalidated方法。

4)Header和Footer
ListView除了显示Item以为,还可以显示Header和Footer。ListView提供了addHeaderView和addFooterView方法添加Header和Footer。需要注意的是:必须在给ListView设置Adapter之前,调用这两个方法添加header或者footer,否则会抛出异常。

5)使用selector美化listView
通过设置ListView的listSelector属性,可以为listView的Item设置选中,点击等显示效果。在Android中可以使用listView的setSelector方法或者在xml文件中设置android:listSelector属性来设置ListView的selector属性。还可以设置ListView的android:drawSelectorOnTop属性,把selector绘制在item背景之后。

6)在ListView的Item之间显示分割线
通过ListView的android:divider属性或者setDivider方法可以修改Item之间的分割线。也可以给android:divider属性设置图片、颜色,或者设置为@drawable/@null(表示无分割线)。在使用android:divider属性时,同时还可以使用dividerHeight属性设置分割线占据的高度。

7)使用transcriptMode和stackFromBottom属性
ListView有两个比较特殊的属性android:transcriptMode和android: stackFromBottom。使用transcriptMode属性可以在有数据变化的时候让listView自动滚动到底部。transcriptMode可设置为一下三个不同的值:
disabled:禁用transcriptMode属性;
normal:如果最后一个item可见,滚动到底部;
alwaysScroll:总是自动滚动到底部;
使用stackFromBottom属性可以设置item从底部向上开始排列。通常在聊天、短信类型的应用中使用stackFromBottom和transcriptMode属性可以得到很好的显示效果。

详见:http://www.devdiv.com/Android-ListView%E7%9A%84%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7-thread-124257-1-1.html

免责声明:文章转载自《ListView技巧》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇rst标记语法RABC权限控制(二级菜单实现)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android 演示 Android ListView 和 github XListView(1-3)

本文内容 环境 项目结构 演示 1:ListView 演示 2:简单 XListView 演示 3:音乐列表 XListView 演示 4:另一个音乐列表 XListView 本文四个演示,循序渐进。 演示 1 只是普通的 Android ListView 控件; 演示 2 是 GitHub 上的 XListView 控件,具备“下拉...

ScrollView里面添加ListView时,解决ListView的显示问题

在ScrollView里面添加ListView时,看了很多其他人的讲述,好像ListView只显示一条信息,为此简单新写了一个ListView控件,在布局文件里调用就可以了,代码如下: 1:ScrollViewWithListView.java 1 package com.ghp.view; 2 3 import android.widget.Li...

WPF: 在ListView中添加Checkbox列表

描述:ListView是WPF中动态绑定工具的数据容器,本文实现了一个在ListView中显示的供用户选择的列表项目,并且控制列表中选择的项目数量,即实现单选。 XAML中创建ListView,代码如下: <ListView x:Name="listView_LineOfBusiness" Width="280" Height="220">...

android 边框圆角

设置边框圆角可以在drawable目录里定义一个xml [xhtml] view plaincopy <?xml version="1.0" encoding="utf-8"?>   <shape xmlns:android="http://schemas.android.com/apk/res/android"&...

Flutter之CupertinoSwitch和Switch开关组件的简单使用

本片博文没啥技术含量,就是简单的介绍一下CupertinoSwitch组件的使用方式。先来看看具体的运行效果:单从运行效果来看我们可以知道:1、CupertinoSwitch可以自主设置打开状态的颜色,比如上图中的绿色和蓝色2、可以控制 开关是否能用 下面来看看具体的设置,CupertinoSwitch有三个属性:value:布尔类型的值,true表示打开...

一个漂亮而强大的RecyclerView

代码地址如下:http://www.demodashi.com/demo/13470.html 简介 主要提供了简单易用强大的RecyclerView库,包括自定义刷新加载效果、极简通用的万能适配器Adapter、万能分割线、多种分组效果、常见状态页面、item动画效果、添加多个header和footer、侧滑、拖拽、Sticky(黏性)效果、多item布...