gridview 和 Listview 的getview重复问题

本文详细解析了在Android开发中ListView和GridView多次加载的问题,包括因item高度不确定导致的多次getview调用,以及如何通过修改布局和在getview中添加条件判断来有效避免这一问题,确保应用的流畅体验。

一 、 关于listview 的问题
    (1)情况一:
     listview中添加选择事件,弹出dialog,发现每次都弹出很多个dialog,于是在adapter中进行调试发现,getview方法执行了很多次,而且次数也不定,四次五次都有,最后在网上发现说是由于listview的item的高度不定,所以很次都要宠幸你计算,而导致需要多次调用getview方法,只需要把该listview的父控件布局改为fill_parent就ok了,这个方法确实可以解决这个问题。所以遇到这个问题,这样改一下就可以了。

     (2) 情况二 : 
     当然如果你还遇到在dialog中使用setadapter来加载一个listview的时候使用上面的方法就不起作用了,这个问题我也没有找到根本的原因,但是找到的解决办法就是,在getview中进行条件判断就能阻止多次调用的问题。使用下面的 判断来防止多次执行。

if(parent.getchildcount() == position)  
{  
       正常情况下应该执行的代码  
}  
else  
{  
     System.out.println("多次加载"); 
}


这样就可以防止多次执行getview的方法。


二  、 关于gridview 的问题
问题和上面基本上是一样的,但是不同的是 ,这个getview多次执行的只是position=0  item 所以与上面的问题有所不同,但是原因还是差不多的,它也是不知道item的高度是多少所以系统会用第一项进行加载测试,所以gridview的第一项就会多次加载。为了解决这个问题,其实方法和上面提到的第二种情况是一样的。也是在getview中进行if else 的判断就可以了。代码与上面是一样的。

if(parent.getchildcount() == position)  
{  
       正常情况下应该执行的代码  
}  
else  
{  
     System.out.println("多次加载");  
}


转载于:https://my.oschina.net/yoyofruit/blog/337671

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值