listview的自定义adapter不执行getview()分析

  listview是一个比较常用的控件,为了适应自己需要的效果往往会继承baseadapter去实现自定义的适配器。

       在该适配器中出错最多的应该是getview()了。

       从接触listview控件开始,第一个报的错就是关于getview()的。昨天有人问了我一个同样是不执行getview()的问题,所以我觉得有必要去写一篇博文记录一下。算是自己学习总结了。

       第一、没有执行getview往往是因为没有显示页面。

                  这个时候,我们首先要保证确实有有效的数据传到了自定义的适配器里。因为如果getcount()的返回值是0的话,getview是不会被执行的。

       第二、要确认adapter在核实的时间和位置去实例化,比如说在异步任务的onPostExecute()方法中去实例化adapter的话,甚至会导致该方法也不会被执行到,当然getview更执行不到了。

   第三、布局的问题。在xml文件中,有些属性会极大的影响到getview的执行。他执行的前提是,他有空间去展示。

        当你将listview设置为gone的时候,他是不会去执行这个方法的。在适配数据前将他改为可见就好了。

        另外一个就是昨天晚上朋友遇到的那个问题。将父布局设置成android:layout_height="wrap_content",因为页面的测量是在oncreate的时候被测量的。而此时里面是没有内容的,也就是高度为0,在数据加载好之后,父布局并没有重新测量,而只是listview重新测量了,但是因为listview此时的高度是0,所以getview()还是无法被执行到。将android:layout_height="wrap_content"改成android:layout_height="match_parent"就好了

    这个是我遇到的一些问题和解决方案。有什么问题的话,请各位大神指导。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值