1

У меня здесь странная ситуация.Адаптер ListView getView дважды вызывался с помощью null convertView на устройстве Nexus

Существует вид списка с пользовательским адаптером. Представление имеет несколько разных типов элементов, которые правильно используются в getViewItemType. Почти на каждом устройстве и поддерживаемой ОС метод getView в адаптере вызывается без какого-либо странного поведения.

Я знаю, что getView можно назвать много раз, и это не проблема. Однако на Nexus 5 и Nexus 6 getView вызывается дважды для одного и того же типа предметов и передает convertView из null.

В результате мы создаем два вида для одной и той же строки в списке. Кажется, что на самом деле он будет прикреплен или добавлен в список, а другой - нет.

Любые предложения или советы, которые могут быть причиной этого?

+1

Как вы знаете, вызывается дважды для одного элемента? – Xcihnegn

+1

Вы правильно переопределили 'getViewTypeCount()' ?? – trpride

+0

Я не знаю, будет ли это работать, но вы можете сделать свой фрагмент синглом? – Eenvincible

ответ

0

Как вы знаете, вызывается дважды для одного элемента?

I ran the app with a debugger. It stopped on my breakpoint in getView multiple times (as expected) but two of the stops for the item passed null convertViews. It is a very small list, only four rows, each a different item type. They all show on the screen easily

Вы должны проверить position в getView(), чтобы убедиться, если вызывается дважды.

Я полагаю, не потому, что первый раз из каждого вида элемента (convertView) всегда нуль, то вам нужна inflate вида с макетом представления элементов и вернуть его. В то время как в следующий раз отображается одинаковое представление (хотя для другого элемента), convertView будет не нулевым, но вам все еще нужно установить представления со значением, которое соответствует позиции позиции.

Надеюсь, что у вас есть!

+0

@ Сабабадо вы согласны с этим ответом? – Xcihnegn