2014-08-28 83 views
1

假设我在android中有一个ListView,并且它的适配器绑定了一个包含两个元素的arraylist为什么ListView的getVIew方法在android中被调用很多次

但是我发现一个问题,当我开始activity其中ListView所在地,arrayAdaptergetView方法被调用多次(至少4倍)。但是我arraylist仅持有2 elements.And实际finnaly屏幕上只出现两个元素。

所以这里是我的问题:为什么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)); 
     } 

大约有4登录logcat的。从我的角度来看,它应该是2

任何帮助表示赞赏。

+0

检查:http://stackoverflow.com/questions/2618272/custom-listview-adapter-getview-method-being-called-multiple-times-and-in-no-co – 2014-08-28 12:19:48

回答

1

为了测量/布局的目的,可以首先请求这些项目,然后再重新实际附加到列表视图。

如果您的列表视图位于需要多个度量/布局传递的布局中,例如带有权重的LinearLayout,那么您将在适配器中获得更多的视图请求。

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

+0

谢谢,现在的问题是明确的 – 2014-08-28 12:27:27

相关问题