java - 为什么在android中多次调用ListView的getVIew方法

标签 java android

<分区>

假设我在 android 中有一个 ListView,它的适配器绑定(bind)到一个包含两个元素的 arraylist

但是我发现一个问题,当我启动ListView所在的activity时,getView方法arrayAdapter 被调用了很多次(至少 4 次)。但是我的 arraylist 只包含 2 个元素。实际上最后只有两个元素出现在屏幕上。

所以这是我的问题:为什么调用 getView 方法的次数比应有的次数多得多?

public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
            ViewGroup parent) {
        View rowView=convertView;
        if(rowView==null)
        {
            Log.d("rowview==null is true", Integer.toString(childPosition));
                    }
        else{
            Log.d("rowview==null is false",  Integer.toString(childPosition));
        }

LogCat中有4个Log,我个人认为应该是2个

感谢任何帮助。

最佳答案

可以首先请求这些项目用于测量/布局目的,然后再实际附加到 ListView 。

如果您的 ListView 位于需要多个测量/布局 channel 的布局中,例如带有权重的 LinearLayout,您将在适配器中收到更多 View 请求。

要了解调用 getView() 方法的原因,请将调试器断点放在那里并检查调用堆栈。

关于java - 为什么在android中多次调用ListView的getVIew方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25548586/

相关文章:

java - android - 在 try 语句中忽略返回

android - 如何设置 wheelView 项

android - 在浏览器中工作的本地主机上的 WCF 服务在 PhoneGap 中不工作

java - 找不到包裹

java - 与赋值运算符相比,使用后修复运算符有哪些优点/限制?

java - 如何使用 Android Studio 删除 JsonArray 中的反斜杠 ("\"")?

Android:在视频捕获期间在视频上添加颜色叠加效果

java - 在 App Engine 任务队列中使用 POJO

java - 正则表达式无法正确匹配多个单词

java - 如何使用检测打印 Java 运行时调用的所有方法?