Recycler View с несколькими строками и столбцами - AutoFit, например Flow Layout [Android]

Мне сложно создать такой макет:

введите описание изображения здесь

Мое первое понимание заключалось в том, чтобы использовать RecyclerView с адаптером, который может обрабатывать каждый элемент и раздувать его макет.

Пока что не так хорошо.

Я получил этот макет до сих пор:

введите описание изображения здесь

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

Некоторые из моих попыток были

  • Используйте макет сетки и измените максимальное количество столбцов в зависимости от количества элементов в списке.
  • StaggeredGridLayoutManager звучал как мощный кандидат, чтобы исправить его и сделать меня счастливым, но, к сожалению, когда я пытался его использовать, я понимаю, что нам нужно передать несколько spanCount (столбцов) на конструкторе, и я нашел несколько способов обойти это ограничение меняло количество столбцов каждой строки, но мне не понравился конечный результат, не так, как я видел в других приложениях, таких как Foursquare, когда вы настраиваете свои интересы.
  • Я проверил эту библиотеку Flow Layout, но я даже не начал ее использовать, потому что я не хочу потерять весь recycler я считаю, что есть способ заставить его работать!..... Даже зная, что библиотека делает именно то, что мне нужно.

Ребята, я здесь не ищу какой-то уже сделанный мир кода или кто-то, кто выполняет мою работу. На самом деле я ищу свет в конце туннеля.

Ответ 1

Здравствуйте, если вы не хотите использовать recyclerview, есть еще один пример, использующий пользовательскую библиотеку, которая действует как List GitHubLibrary TagLayout

  • Пример кода:

    mFlowLayout.setAdapter(new TagAdapter<String>(mVals)
       {
           @Override
           public View getView(FlowLayout parent, int position, String s)
           {
               TextView tv = (TextView) mInflater.inflate(R.layout.tv,
                       mFlowLayout, false);
               tv.setText(s);
               return tv;
           }
       });
    

Используя приведенный ниже код, вы можете предварительно установить желаемый выбор:

mAdapter.setSelectedList(1,3,5,7,8,9);

Покажет результат, как показано ниже: -

enter image description here

Ответ 2

Это легко сделать с помощью новой библиотеки дизайна материалов Google, которая содержит компонент под названием Chips. Таким образом, вам не нужно использовать RecyclerView.

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

КАК ИСПОЛЬЗОВАТЬ КОМПОНЕНТ:

1. Импортируйте библиотеку

implementation 'com.google.android.material:material:1.1.0'

2. Используйте код ниже

 <com.google.android.material.chip.ChipGroup
      android:layout_width="match_parent"
      android:layout_height="wrap_content">

 <!-- Your items here -->

     <com.google.android.material.chip.Chip
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Item 1"/>

     <com.google.android.material.chip.Chip
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Item 2"/>

     <com.google.android.material.chip.Chip
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Item 3"/>

 <!-- End -->

</com.google.android.material.chip.ChipGroup>

Вы можете найти более подробную информацию здесь: Компоненты материала