• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

我不明白为什么getView()方法无法正确运行时,我重用视图组件

Android 来源:Crowley 9次浏览

我定义了一个适配器,它延伸BaseAdapter当我用ListView来显示东西。我重写View getView (int position, View convertView, ViewGroup parent)方法重用视图组件,在方法中,我也写了if(convertView == null) {System.out.println("test");}块。 ListView有50行数据,屏幕只能显示20行左右的数据。当我运行该应用程序时,尽管我滑动屏幕以确保所有数据都已加载,但LogCat打印的行少于50行“测试”。但为什么?我认为它应该打印50行数据。下面是关键代码:我不明白为什么getView()方法无法正确运行时,我重用视图组件

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    if(convertView == null) { 
     convertView = inflater.inflate(resource, null); 
     System.out.println(++count + "convertView == null:" + convertView); 
    } 
} 

有人请帮助我,我是一个新手….感谢

===========解决方案如下:

因为convertViewnull仅如果没有可以回收先前所返回视图(即它不再在屏幕上)。

您从适配器的getView()返回的视图可以在稍后调用getView()时回收。该框架通过convertView参数传递了可回收的视图。

所以你的convertView == null分支只能运行足够多的次数来填充列表视图屏幕一次,之后,当滚动时,这些旧的视图被回收。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)