Я делал подобные вещи раньше, я использовал значение счетчика.Использование родительского объекта адаптера является неполным, потому что это может быть проблемой при обновлении представления или повторном вызове getView()
.
Поэтому я рекомендую использовать массив счетчика.
Сначала определите массивв адаптере глобально.
private int isInitializedView[];
И затем инициализируйте его в getView ().
isInitializedView[position] = 0;
В приемнике выбора сделайте то, что вы хотите, если он уже инициализирован.
holder.mySpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
isInitializedView[position]++;
if(isInitializedView[position] > 1) {
// do someting that you want
}
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {}
});
(Обратите внимание, что isInitializedView[position]++;
может идти после процедуры if()
и вызывать событие, только если это значение равно >0
. Это ваш выбор.)