ListView常用的优化技巧
来源:互联网 发布:linux sleep函数单位 编辑:程序博客网 时间:2024/05/16 04:42
ListView作为最常用的显示效果之一,基本用法相信大家已经了解,
下面我们重新学习一下ListView的技巧:
1.1,使用ViewHolder模式提高效率
ViewHolder模式是提高ListView效率的一很重要的方法。ViewHolder模式充分利用了ListView的视图缓存机制,避免了每次在调用getView()的时候都去通过findViewById()实例化空间。据测试,使用ViewHolder将提高50%以上的效率。使用ViewHolder模式来优化ListView非常简单,只需要在自定义Adapter中定义一个内部类ViewHolder,并将布局中的控件作为成员变量,代码如下所示:
public View getView(int pos, View convertView, ViewGroup parent){ ViewHolder holder; //判断是否缓存 if (convertView == null) { //通过layoutInflater实例化布局 convertView = mInflater.inflate(R.layout.list_item, null); holder.text = (TextView) convertView.findViewById( R.id.text)); holder.icon = (ImageView) convertView.findViewButId( R.id.icon)); convertView.setTag(holder); }else { //通过tag找到缓存的布局 holder = (ViewHolder) convertView.getTag(); } holder.text.setText(DATA[pos]); holder.icon.setImageBitmap((pos & 1) == 1 ? mIcon1 : mIcon2); return convertView; } //创建一个内部类ViewHolder,final,static修饰词,然并卵。 class ViewHolder { TextView text; ImageView icon; }
1.2,设置项目间分隔线
android:divider="@color/divider_color" android:dividerHeight="1px"
把分割线设置成透明;
android:divider="@color/divider_color"
1.3,隐藏ListView的滚动条
android:scrollbars="none"
1.4,取消ListView的Item点击效果
当点击ListView中的一项是,系统默认会出现一个点击效果,在android5.X以上是一个波纹效果,而在Android5.X一下的版本则是一个改变背景颜色的效果,当可以通过修改listSelector属性来取消掉点击后的回馈效果,代码如下:
android:listSelector="#00000000"
1.5,设置ListView需要显示在第几项
listView.setSelection(N);
其中N就是需要显示的第N个Item。
当然,这个方法类似scrollTo,是瞬间完成的移动。除此之外,还可以使用如下代码来实现平滑移动。
mListView.smoothScrollBy(distance,duration);mListView.smoothScrollByOffset(offset);mListView.smoothScrollToPosition(index);
1.6,动态修改ListView
当然这里的mData必须和传进去的是同一个。
mData.add("new:);mAdapter.notifyDataSetChanged();
1.7,遍历ListView中的所有Item
ListView作为一个ViewGroup,为我们提供了操纵子View的各种方法,最常用的就是通过getChildAt()来获取第i个子View,代码如下所示。
for(int i =0;i<mListView.getChildCount();i++){ View view = mListView.getChildAt(i);}
1.8,处理空ListView
我们在使用ListView展示数据时,如何需要展示的数据集为空,那么ListView不会显示任何数据或提示,按照完善这一用户体验的需求,ListView提供了一个方法setEmptyView,当数据集为空时,就显示设置的这个界面。
<LinearLayoutandroid:id="@+id/LinearLayout1"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@+id/layoutTitlebar"><ListViewandroid:id="@+id/listViewFriends"android:layout_height="match_parent"android:layout_width="match_parent"android:background="@color/friendBGColor"android:cacheColorHint="#00000000"></ListView><ImageViewandroid:id="@+id/empty_image"android:text="@string/strNoRecordsFound"android:layout_width="fill_parent"android:layout_height="fill_parent"android:src="@drawable/empty"android:gravity="center"></ImageView></LinearLayout>
在代码中,我们通过以下方式给ListView设置空数据时要显示的布局,代码如下所示。
ListView listView = (ListView)findViewById(R.id.listview);
listView.setEmptyView(findViewById(R.id.empty_image));
- ListView常用的优化技巧
- listview常用的优化技巧
- ListView常用优化技巧
- ListView常用优化技巧
- Android的ListView常用优化技巧
- ListView常用技巧及优化
- ListView的优化技巧
- ListView的优化技巧
- ListView的常用优化
- ListView常用优化技巧(Android群英传)
- android群英传笔记——ListView常用优化技巧(二、ListView的滑动监听)
- Tomcat常用的优化技巧
- Tomcat常用的优化技巧
- Tomcat常用的优化技巧
- 常用的性能优化技巧
- listview 常见的优化和使用技巧
- ListView优化技巧 ,ListView分页
- Delphi ListView的用法(常用技巧)[转载]
- 自然数组的排序
- 构造函数(Constructor)析构函数(Destructor)怎么用?
- 数据结构及算法——链式表操作集(C语言)
- Flask Web平台搭建
- iOS中Cookie介绍
- ListView常用的优化技巧
- OpenLayers3-10-Advanced View Positioning
- 数据结构及算法——带头结点的链式表操作集(C语言)
- RaspberryPi和Arduino控制温室温度
- ATan2与ATan的区别
- 用sublime搭建C++开发环境
- 彻底想明白,就那么回事
- BZOJ1065奥运物流 NOI2008
- Android studio 搭建 Svn 及文件忽略