Как реализовать смещенные представления в порядке чтения?

Вот что я хочу реализовать:

Пораженные представления

Я пытаюсь отобразить определения, которые я получаю из Интернета (сейчас они приходят из фиктивных данных, но это ни здесь, ни там).

Моей первой мыслью было использование горизонтального StaggeredGridView. Есть две проблемы с этим. Представления расположены не в правильном порядке, и счетчик диапазонов не устанавливается динамически. Кроме того, я обнаружил, что вызов setSpanCount() в onLayoutChildren() вызывает ошибку во время выполнения.

Попытка просмотра в шахматном порядке

Конечно, я мог бы просто использовать LinearLayout и отказаться от попытки перезапустить представления. Это будет работать в большинстве случаев, но если пользователь получит определение длины, это будет очень неэффективно для памяти.

Имея это в виду, я решил подкласс StaggeredGridLayoutManager. И здесь мне нужна твоя помощь. Вот ресурсы, которые я нашел в моем собственном поиске:

Реализация Google LinearLayoutManager от Google

Руководство по реализации пользовательского LayoutManager

Еще одно руководство по реализации пользовательского LayoutManager

Обзор нескольких принципов, которым необходимо следовать при реализации пользовательского LayoutManager

Я рассмотрел каждый из них, но я не могу мысленно выделить, какие части существуют для их конкретных сценариев использования и какие части являются общими для всех пользовательских реализаций. Если бы кто-то мог так любезно указать мне на направление ресурса или объяснить, какие все методы я должен вызывать, в каком порядке и для какой цели, я был бы безмерно благодарен. Спасибо!

1 ответ

Решение

Ваш первый скриншот выглядит как идеальный случай для библиотеки Google FlexboxLayout. Вы можете использовать FlexboxLayoutManager с RecyclerView, чтобы получить именно то, что вы показали.