2014-08-28 5 views
1

Скажите, что у меня есть ListView в android, и его адаптер привязан к arraylist, удерживая два элемента.Почему метод getView для ListView много раз вызывается в android

Однако я считаю, вопрос, когда я начинаю activity, в котором ListView находится, то getView метод arrayAdapter вызывается много раз (по крайней мере 4 раза) .Однако мой arraylist держит только 2 elements.And на самом деле на экране отображаются только два элемента.

Итак, вот мой вопрос: почему метод 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

Check: http://stackoverflow.com/questions/2618272/custom-listview-adapter-getview-method-being-called-multiple-times-and-in-no-co –

ответ

1

Элементы могут быть запрошены сначала для целей измерения/компоновки, а затем снова для фактического присоединения к представлению списка.

Если ваше расписание составлено в макете, требующей нескольких проходов меры/макета, таких как LinearLayout с весами, вы получите еще больше запросов на просмотр в своем адаптере.

Чтобы узнать, почему вызван метод getView(), поместите там контрольную точку отладки и проверьте стек вызовов.

+0

Спасибо, теперь вопрос ясен –