一、问题描述
ListView显示数据时,自定义了一个适配器(extends BaseAdapter),然后重写了getView方法,现在出现一个问题,就是这个getView()方法被重复调用了,比如我的_data中有两条数据,但是log.i("show",house.toString());这句却被执行了4次甚至更多。
二、原因分析
getView()被调用的次数取决于当前屏幕能显示的item的数量,显示一个item就调用一次。当listview的layout_height属性是wrap_content时,有可能造成listview无法计算高度,相应的需要显示的item数量就无法计算,造成getView多次被调用。
三、解决办法
1、ListView重复调用getView解决办法:
ListView布局时height和width都不是match_parent,导致不断计算高度,不断刷新。或者说它的父容器没有设置成match_parent. 我们只需要设置ListView为固定宽高即可。注意:如果还是不行,记得查看是否是父容器没有设置为match_parent
listView布局xml文件修改前:
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height