Пользовательский адаптер курсора Android и BindView - PullRequest
0 голосов
/ 22 декабря 2010

Хорошо, я надеюсь, что меня не застанут, если я задам такой неоднозначный вопрос, но я в тупике и даже не знаю, как это задать.Я постараюсь как можно лучше сообщить о своей проблеме и уточню, если это необходимо.

У меня есть два курсора, объединенных с помощью MergeCursor.У меня также есть пользовательский адаптер курсора.В моем собственном адаптере курсора я переопределил BindView.Я замечаю странное поведение, когда элементы не отображаются в моем списке.По сути, у меня есть два текстовых представления для каждой строки в списке.В последнем ряду одно из полей пустое.

Я перехожу через BindView и замечаю, что он выполняется 3 раза.В моем списке всего 7 элементов (7x3).Все они отображаются на экране, кроме одного из полей в пункте 7. Я заметил, что на двух проходах, хотя BindView отсутствует значение поля.

Я хочу знать, почему BindView выполняется 3 раза.Поэтому, когда я говорю 3, я имею в виду 3х7.7 элементов в списке, поэтому он перебирает BindView 21 раз.Я надеюсь, что я понимаю.

Пожалуйста, не хлопайте меня, если это не ясно.Я рад изменить или предоставить дополнительную информацию.

1 Ответ

1 голос
/ 22 декабря 2010

Я хочу знать, почему BindView выполняется 3 раза. Поэтому, когда я говорю 3, я имею в виду 3х7. 7 элементов в списке, поэтому он перебирает BindView 21 раз. Я надеюсь, что я понимаю.

Когда ListView проходит этап измерения, он вызывает newView и bindView на вашем адаптере, чтобы он мог устанавливать размеры строк (его дочерние элементы) и определять свои собственные измерения. При этом он не сохраняет виды, поэтому их необходимо воссоздавать, когда виды отображаются на экране. Вы можете посмотреть на источник ListView , чтобы увидеть, что именно он делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...