gridView с различными размерами ячеек, стиль интереса

Фон

Вид сетки это класс, который расширяетсяAdapterView Это означает, что он эффективно показывает ячейки в стиле сетки, перерабатывая старые представления, чтобы они отображались как новые, когда пользователь прокручивает их.

Проблема

Иногда вам может понадобиться специальный пользовательский интерфейс, напоминающий пользовательский интерфейс Windows Phone Tiles, с ячейками разных размеров друг над другом.

Что-то вроде этого:

AABB
AACC
AADD
AADD

каждая буква представляет часть своей ячейки, поэтому ячейка A имеет размер 2x4, ячейка B и ячейка C занимают 2x1 каждая, а ячейка D - 2x2.

Это может быть даже больше, чем то, где ячейка D закончила немного выше того, что я показал, и прямо под ней есть другая ячейка, так что конец D и конец A не обязательно выровнены.

Пример приложения, которое имеет этот стильPinterest .

GridView не допускает такой вещи.

Фактически, у каждого решения, которое я пробовал, есть проблемы. Хотел бы спросить, есть ли другие альтернативы или лучшие решения.

Что я нашел

Есть несколько способов справиться с этой проблемой:

Как класс, который расширяетсяAdapterView Вид сетки имеет возможность иметь тип для каждого элемента (используяBaseAdapter), что позволит вам установить, как расположить ячейку.

Тем не менее, это все еще ограничивает вас, так как вы будете получать ряды предметов, один под другим. Вы должны выровнять их.

Макет сетки это относительно новый макет, и он довольно гибкий. Google опубликовал хорошую библиотеку совместимости для него, поддерживающую API7 и выше.

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

Если у вас много предметов, вам нужно создать все виды для них.

Библиотека QuiltView - простирается от GridLayout, поэтому в основном имеет ту же проблему, что и он.

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

другие решения, как упоминаетсяВот .

Вопрос

Кто-нибудь знает другую альтернативу этой проблеме? Может быть, какие-нибудь обходные пути для любого из решений, которые я показал?

РЕДАКТИРОВАТЬ: Я думаю, что о StaggeredGridView, прокрутка и исключения могут быть решены с помощью обычного ImageView, который вы устанавливаете его размер внутри getView. я думаю, что причина его странной работы заключается в том, что образец обновляет размер изображения после его загрузки из Интернета.

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

РЕДАКТИРОВАТЬ: на данный момент, я думаю, что лучшее решение заключается в использовании,PinterestLikeAdapterПросмотреть библиотеку.

у меня нет проблем, которые я могу найти.

тем не менее, он не может делать элементы, занимающие более 1 ширины ячейки. это очень хорошо, тем не менее.

РЕДАКТИРОВАТЬ: к сожалению, это имеет проблемы с notifyDataSetChanged. я сообщил об этомВот.

Ответы на вопрос(3)

Ваш ответ на вопрос