Лучшие практики сочетания представлений со списками и без списков, например «Маркет».
-
19-09-2019 - |
Вопрос
Я пытаюсь решить проблему, с которой, по-видимому, сталкиваются многие разработчики Android, а именно: как чередовать списки с данными, не относящимися к списку, в одной большой прокручиваемой панели.
Я имею в виду модель экрана для отдельного приложения в Маркете.У вас есть большое описание, список из нескольких лениво загружаемых комментариев, а также несколько отдельных элементов, которые выполняют разные функции, например, посещают веб-страницу разработчика, звонят ему и т. д.А между ними есть красивые заголовки разделов.
Имитировать этот подход кажется чрезвычайно трудным.Я прочитал достаточно ответов SO и сообщений в списках рассылки, чтобы знать, что не следует помещать ListView внутри ScrollView, но мне нужен тот же эффект без использования addHeader() и addFooter() с очень сложными представлениями верхнего и нижнего колонтитула.
Я пробовал использовать LinearLayout, который у меня есть с представлениями, но я не могу получить приятные эффекты щелчка, которые имеют элементы списка по умолчанию (оранжевый фон, белый для длительного щелчка и т. д.).
Что мне делать?
Решение
Взгляни на мой MergeAdapter
, который предназначен для обработки подобных сценариев.
Другие советы
Почему бы не использовать заголовок?Это просто.Определите содержимое заголовка в отдельном макете.Макет вашей активности не содержит ничего, кроме ListView
что вы хотите внизу.Нет просмотра прокрутки!
Тогда позвони
View headerView = getLayoutInflater().inflate(R.layout.header_layout, null);
ListView listView = (ListView) findViewById(R.id.my_list_view);
listView.addHeaderView(headerView, null, false);
Крайне важно назвать эту форму addHeaderView
чтобы заголовок был отключен.В противном случае его можно выбрать, что выглядит совершенно странно.
Пример Марка сработает.в основном вам нужен адаптер с разными типами представления.Еще один хороший пример:http://jsharkey.org/blog/2008/08/18/separating-lists-with-headers-in-android-09/который может работать лучше, чем у Марка, потому что вы хотите иметь разделители и группировать объекты вместе.