Наследование от AdapterView
может сработать, но может оказаться не таким полезным, как вы надеетесь. Часть инфраструктуры, предоставляемой AdapterView
, является закрытой для пакетов, то есть у нас нет к ней доступа.
Например, AdapterView
управляет индексом выбранного элемента для AbsListView
и ListView
. Однако, поскольку такие методы, как setNextSelectedPositionInt(int position)
(это единственный путь к настройке mNextSelectedPosition
), являются частными для пакета, мы не можем получить к ним доступ. AbsListView
и ListView
могут добраться до них, потому что они в одном пакете, а мы не можем.
(Если вы покопаетесь в исходном коде AdapterView
, вы обнаружите, что setNextSelectedPositionInt()
вызывается из handleDataChanged()
. К сожалению, handleDataChanged()
также является частным пакетом и _not_called
из любого другого места в пределах AdapterView
, которое можно использовать для включения установки позиции.)
Это означает, что если вам нужно управлять выбранной позицией, вам нужно будет воссоздать эту инфраструктуру в вашем производном классе (или вам нужно будет получить от ListView
или AbsListView
... хотя я подозреваю, что вы столкнетесь с аналогичными проблемами, происходящими от AbsListView
). Это также означает, что любая функция AdapterView
, связанная с выбором элементов, скорее всего, не будет работать в полной мере.
person
TechnalyticSteve
schedule
09.09.2013