2016-08-29 1 views
0

Я новичок до Adapter. Итак, чтобы узнать больше о том, как реализовать Adapter Я проходил различные примеры в SO и некоторых других блогах. Я обнаружил, что многие определяют getCount(), getItem(), getItemId() в пользовательском классе адаптера, который распространяется ArrayAdapter и даже не использует эти функции. Я понимаю, что в пользовательском классе, расширяющем «BaseAdapter», мы должны переопределить getCount(), getItem(), getItemId(), чтобы все было сделано.Использование класса getCount(), getItem(), getItemId(), расширяющего ArrayAdapter

На мой вопрос: Должен ли я определять эти функции в пользовательском классе адаптера при расширении ArrayAdapter?

Примечание: Что действительно меня удивило, что, когда я реализовал пользовательский Spinner с использованием специального адаптера простирающегося ArrayAdapter без определения этих функций, кажется, нет проблемы, и все работало нормально. Я действительно смущен, сделал ли я это неправильно.

+0

@ люди, которые голосуют. Пожалуйста, также прокомментируйте причину голосования. Благодарю. – tpk

+0

Просто проверьте источники «ArrayAdapter» и посмотрите, уже ли эти методы уже реализованы, и в случае, если вы не хотите изменять реализацию - не переопределяйте их в своем классе. – Egor

+0

'public T getItem (int position) { throw new RuntimeException (" Stub! "); } 'все, что я вижу. Должен ли я предположить, что без аннотации '@ Override' мы можем переопределить getItem() в пользовательском адаптере? – tpk

ответ

0

Мы не должны определять getCount(), getItem(), getItemId() при создании пользовательского адаптера, расширяющегося ArrayAdapter. Это необязательно, так как в definition из ArrayAdapter эти функции переопределены. Но если нам нужно переопределить эти функции и предоставить наше собственное определение, мы можем это сделать, и проблем нет.

Спасибо Egor за то, что навел меня на определение.

0

Эти методы используются внутри, когда вы «получаете свой товар». поместите свою логику, чтобы заполнить ваши данные в вашем методе getView.

+0

Не могли бы вы рассказать? – tpk