Wagas правильно. В getView
вашего адаптера вы получаете представление (называемое convertView
автозаполнением Eclipse). Это потому, что ListView
s перезапускает представления для каждой строки. Если вы установите свойство для данного View
, оно сохранит это свойство при его переработке.
По этой причине вы никогда не должны устанавливать свойства чего-либо в View
данного ряда вне метода getView
Адаптера, поддерживающего ListView
.
Существует несколько способов справиться с этим, но основная идея заключается в том, что вы хотите установить некоторый фрагмент данных, который использует position
, переданный в onItemClick
, для установки флага. Затем проверьте флаг в getView
Адаптера, чтобы решить, как установить фон для строки View
.
Например, если можно выбрать только один элемент, вы можете просто установить переменную-член, скажем mPosition
на самом адаптере, в позицию, переданную в onItemClick
, а затем проверить getView
, если позиция = = mSelectedPosition, чтобы решить, как установить представление. Если можно выбрать несколько элементов, возможно, вы установите переменную-член для каждого объекта, содержащегося в адаптере.