Подкласс SimpleAdapter и перезапись getView вызывают проблемы с bindView()

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View v;

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater)thecontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = inflater.inflate(layoutResource, parent, false);

    } else {

        v = convertView;

    }

    bindView(position, v);

    return v;
}

Здесь нет ничего ломающего игру, как я уже сказал, это 95% копия и вставка из исходного источника адаптеров, я просто взял некоторые переменные из моего конструктора вместо частных переменных, объявленных в суперклассе, поскольку я не могу получить к ним доступ в подклассе. Моя проблема заключается в методе bindView, который вызывается непосредственно перед возвратом представления. Eclipse не дает мне никакого намека на то, что это делает, и я также не могу вызвать его из своего подкласса.

Метод bindView(int, View) не определен для типа ChangingColorAdapter

Это то, что я получаю, если использую приведенный выше код, хотя я скопировал его из исходного кода. Мне кажется немного странным. Я программирую на уровне API 8 (2.2) и прикрепляю исходники. Если я взгляну на исходный код SimpleAdapters, редактор не сможет сказать мне, куда идет вызов bindView, но он не выдает никаких ошибок.

Я что-то не так понял или что вызывает эту проблему? Кажется, я не могу найти никакой документации или описания метода bindView, только примеры реализации, в основном из адаптеров курсора. Любые подсказки были бы замечательными.

Ваше здоровье


person Viciouss    schedule 16.04.2012    source источник


Ответы (1)


Я полностью испортил это. Проспав несколько часов, я нашел метод bindView() в классе SimpleAdapter. У него нет java-doc, и я мог бы поклясться, что вчера я не мог щелкнуть эту функцию, удерживая клавишу Ctrl, но сегодня она работает нормально. Поскольку метод является закрытым, вам нужно переопределить его, что я и сделал, и теперь он работает идеально гладко.

person Viciouss    schedule 17.04.2012