ListView相关

一.ListView的优化

①视图的复用:

在创建继承BaseAdapter的适配器的时候重写四个方法,其中最重要的两个方法是getCount(),和getView(),

在getVIew()中有个参数convertVIew,这个就是以前是曾经显示的view,还没有被清除,可以通过复用这个来减少创建,

达到节省资源的目的.

②自定义视图的容器减少空间的查询次数,最好定义成静态的类:

创建一个内部类,参数是你需要用到的空间,当使用打气筒的时候就可以同时初始化这个类,并对其的参数赋值,值是寻找的空间,

然后调用setTag(),若convertView存在时,再调用getTag()方法强转成容器对象,相当于给View添加一个类成员变量.

//创建内部类

static class ViewHolder{

private TextView tv;

.....................(个数根据自己需要)

//在适配器的getVIew()方法进行下面的操作

getView(){

View view;

ViewHolder  holder;

if(convertView == null){

view = View.inflat(........)(俗称打气筒,将一个布局文件做成视图);

holder = new ViewHolder();

holder.tv = (TextVIew)view.findById(R.id...);

...........(个数根据自己需要)

view.setTag(holder);

}else{

view = convertView;

holder = (ViewHolder)view.getTag();

}

//下次想要设置某个空间的值得时候就可以直接这样就可以了

holder.tv.setText(.............);

................................

}


③是进行分页加载:

这是我们可以设定的预先加载大概多少条


二.ListView特殊属性详解:

android:divider="@null"   清楚ListView的分割线

android:cacheColorHint="@android:color/transparent"   清楚ListView的背景色

android:layoutAnimation="@anim/layoutanimation"  这个属性可以设置ListView的条目动画,首先是在res下创建anim文件夹,然后分别创建以set和layoutAnimation为节点的xml文件,在后一个xml中调用前一个。

例如:这是set节点的xml:

<set xmlns:android="http://schemas.android.com/apk/res/android" >   
    <translate 
        android:fromXDelta="-100%"  
                android:fromYDelta="0"  
                android:toXDelta="0"  
                android:toYDelta="0"  
                android:duration="1000"  
                android:interpolator="@android:anim/overshoot_interpolator" />
<rotate 
   android:fromDegrees="0"
   android:toDegrees="360"
   android:duration="2000"
   />
</set>

这是layoutAnimation的xml

<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"  
    android:animation="@anim/list_animation"  
    android:animationOrder="normal"  
    android:delay="0.1" />  


android:listSelector="#aaa"设置ListView条目点击后整个条目的背景色


三.ListView的闪屏问题:加载文字是不会出现的,加载图片会出现类似问题

1.最简单是图片加载框架的方法去处理,我用的是Glide,只要设置.skipMemoryCache(false);把该方法设置成false即使用缓存即可,其他框架自寻,都有的

   2.其实出现这个问题就是因为条目复用导致的,在可视条目上的图片缓存还存在,但是一般我们又直接网络加载进行覆盖,一般解决方法就是通过setTag(arg)和getTag(arg)方法查询是cache否存在,存在直接设置,不存在再网络加载


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值