Intereting Posts
Измените сводку ListPreference с новым значением (Android) Объект пользовательского интерфейса, созданный с помощью XML, не обрабатывается в Android Marshmallow Как показать индикатор выполнения до тех пор, пока не будет воспроизводиться видео в реальном времени Android? Прозрачная часть изображения в ImageView становится черной Лучшие решения для Android Socket.IO для поддержания связи Как создать текстовый файл и вставить данные в этот файл на Android Лучшие практики для потоковой передачи аудио Как настроить эмулятор Android 4.0+ для работы в качестве планшета? Время подачи заявки на приложение для Android BuildConfig.DEBUG всегда false при построении проектов библиотеки с помощью gradle Как проверить, установлен ли AlarmManager уже установленный будильник? Данные Android Exif в файле JPEG Работа с неявным намерением будущего устаревания в Lollipop OnTouchListener для всего экрана EditText требуется дважды щелкнуть, чтобы открыть диалоговое окно поиска

Можно ли расширить 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

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

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

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

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

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