android_Adapter_多次调用getview的position=0_position总是0

项目中,不论是ListView,还是GridView,自己定义的Adapter,在getView的时候,发现position总是0,从而导致只有第一行的view可以渲染出来。

经测试和查找,发现是android渲染和调用方式导致的。

ListView或者GirdView等都类似,如果高度设置不够,android在渲染的时候会去试探和探测高度,如果高度不够,则会停止渲染后面的position。

此时会有不少奇怪的调用出现。

- 比如后面还会调用getView方法,但每次positon的值都是0

- 本来getCount是5,但嗲用了4次getView

- 本来getCount是5,但抵用了6次getView

解决方法:

- 如果麽有view的嵌套,那么顶层的View是可以设置合适的高度的

- 如果有View嵌套,那么嵌套层的view的高度是动态的,很难确定的。此时直接设置wrap_content不好处理,只好在运行时,设置View的高度

- 其他方法,待补充吧

  期待完美的解决方案,简化代码~~

参考一个猜测:

原因在于GridView的item的layout中android:layout_height定义为wrap_content , 绘制item高度时系统并不知道item应该绘制多高,它会先取一条来试探以确定item绘制的具体高度,这样就导致多调用了一次getView方法。在滑动、长按等GridView需要重绘的情况下,getView的调用次数可能会不止多一次。

参考:

http://www.androidlearner.net/multiple-times-getview.html

http://www.eoeandroid.com/thread-280139-1-1.html

-

-

-

*

-

-

-

猜你喜欢

转载自fantaxy025025.iteye.com/blog/1897771