Подтвердить что ты не робот

Можно ли расширить AbsListView для создания новых реализаций ListView?

Я смотрел на создание стилистически различного вида списка, как и многие другие, и я начал с рассмотрения расширения AbsListView. Для Android-документа AbsListView:

Базовый класс, который может использоваться для реализации виртуализированных списков элементов. Список здесь не содержит пространственного определения. Например, подклассы этого класса могут отображать содержимое списка в сетке, в карусели, в виде стека и т.д.

После некоторого усилия и обзора реализации ListView, похоже, может быть невозможно расширить AbsListView так, как это делает ListView из-за сочетания двух классов и невозможности доступа к некоторым членам пакета. Я наткнулся на эту форму Ромен Гай:

AbsListView и AbsSpinner предназначены для расширения в пределах фреймворк. Они также могут быть расширены в сторонних приложениях, но мы сделали не ставьте целиком все необходимые защищенные поля и методы. Мы хотим быть очень осторожными в том, как мы предоставляем такие API, чтобы не получить материал для будущих расширений и внутренних изменений. Наш текущий вы просто копируете/вставляете код, который вам нужен приложение.

Я начал пытаться это сделать, но копирование AbsListView становится кроличьей дырой от копирования в кучу других вещей, и это действительно просто похоже на проигрышное предложение. Я хотел посмотреть, удалось ли кому-либо добиться успеха, добавив AbsListView, который мог бы использовать методологию.

[1] http://developer.android.com/reference/android/widget/AbsListView.html

[2] https://groups.google.com/forum/?fromgroups#!topic/android-developers/UhbR1tpVvF0

4b9b3361

Ответ 2

Сообщение проходит около 2010 года, но его оценка по-прежнему сохраняется. Некоторые необходимые методы и поля защищены, чтобы предотвратить будущие несовместимости, которые могут возникнуть в результате изменения внутренних элементов AbsListView.

Лучшим решением по-прежнему является копирование кода для AbsListView в ваш проект вместе с необходимыми зависимостями (указанная вами кролика).

Тем временем, если вы хотите описать, какой вид View вы пытаетесь построить, мы могли бы указать вам в сторону, которая немного легче, чем создание собственного AbsListView?

Ответ 3

У меня был такой же опыт, как и подкласс ListView и AbsListView, чтобы создать прокручиваемую 2D-таблицу. Я закончил свой собственный подкласс ViewGroup, который обрабатывает макет и подкласс TwoDScrollView для обработки прокрутки. Самые тяжелые части получают правильную работу (т.е. Создают и размещают новые представления до их прокрутки в представлении) и синхронизируют позиции представления между прокручиваемыми компонентами. Однако, имея достаточно времени, можно создать надежный компонент, который извлекает данные из курсора и прокручивает его довольно плавно и быстро.