【问题标题】:Why getVIew method of ListView is called many times in android [duplicate]为什么在android中多次调用ListView的getVIew方法[重复]
【发布时间】:2014-10-22 07:16:36
【问题描述】:

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

但是我发现一个问题,当我启动ListView所在的activity时,arrayAdaptergetView方法被调用了很多次(至少4次)。但是我的@ 987654328@ 只包含 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 个。

感谢任何帮助。

【问题讨论】:

标签: java android


【解决方案1】:

可以首先请求项目用于测量/布局目的,然后再实际附加到列表视图。

如果您的列表视图位于需要多次测量/布局传递的布局中,例如带有权重的LinearLayout,您将在适配器中收到更多视图请求。

要了解为什么调用getView() 方法,请在此处放置一个调试器断点并检查调用堆栈。

【讨论】:

  • 谢谢,问题现在很清楚了
猜你喜欢
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
  • 2015-09-09
  • 2011-10-28
  • 1970-01-01
  • 2012-11-13
  • 1970-01-01
  • 2012-02-27
相关资源
最近更新 更多