GridLayout в Котлине?

Я пытаюсь получить GridLayout 2×6 (WxH) в моем приложении Android Kotlin. У меня есть xml, а фрагмент / адаптер настроен для RecyclerView, но я немного не понимаю, как применить GridLayout к этому.

Как я могу получить свои объекты (listview_row_enrollments.xml) для показа в сетке вместо горизонтального списка?

EnrollmentFragment.kt

class EnrollmentsFragment : Fragment() { // TODO: Rename and change types of parameters private var mParam1: String? = null private var mParam2: String? = null private var mListener: OnFragmentInteractionListener? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (arguments != null) { mParam1 = arguments.getString(ARG_PARAM1) mParam2 = arguments.getString(ARG_PARAM2) } } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Inflate the layout for this fragment var view = inflater!!.inflate(R.layout.fragment_enrollments, container, false) loadView(view) return view } fun loadView(view: View) { var recyclerView: RecyclerView = view.findViewById<RecyclerView>(R.id.recyclerView) as RecyclerView recyclerView.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) recyclerView.setHasFixedSize(true) recyclerView.adapter = EnrollmentsAdapter() } // override fun onAttach(context: Context?) { // super.onAttach(context) // if (context is OnFragmentInteractionListener) { // mListener = context // } else { // throw RuntimeException(context!!.toString() + " must implement OnFragmentInteractionListener") // } // } override fun onDetach() { super.onDetach() mListener = null } interface OnFragmentInteractionListener { // TODO: Update argument type and name fun onFragmentInteraction(uri: Uri) } companion object { private val ARG_PARAM1 = "param1" private val ARG_PARAM2 = "param2" fun newInstance(): EnrollmentsFragment { val fragment = EnrollmentsFragment() val args = Bundle() fragment.arguments = args return fragment } } }// Required empty public constructor 

EnrollmentsAdapter.kt:

 class EnrollmentsAdapter : RecyclerView.Adapter<EnrollmentsAdapter.EnrollmentsViewHolder>() { private val items: List<String> init { this.items = Arrays.asList("Breaches", "Data Leaks", "Hacker Chatter", "Services Monitored", "xxx", "xxx") } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): EnrollmentsViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.listview_row_enrollments, parent, false) // view.titleTextView.typeface = Typeface.createFromAsset(view.context.assets, "fonts/Montserrat-Regular.ttf") // view.countTextView.typeface = Typeface.createFromAsset(view.context.assets, "fonts/Montserrat-Regular.ttf") // view.subtextTextView.typeface = Typeface.createFromAsset(view.context.assets, "fonts/Montserrat-Regular.ttf") // view.updatedTextView.typeface = Typeface.createFromAsset(view.context.assets, "fonts/Montserrat-Light.ttf") return EnrollmentsViewHolder(view) } override fun onBindViewHolder(holder: EnrollmentsViewHolder, position: Int) { holder.bind(getItem(position)) } override fun getItemCount(): Int { return 6 } fun getItem(position: Int): String { return items[position] } class EnrollmentsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { fun bind(value: String) { // itemView.titleTextView.text = value } } } 

FragmentEnrollments.xml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="xxx.xxx.EnrollmentsFragment"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:background="@color/kLightGray" android:paddingTop="8dp" android:clipToPadding="false" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout> 

listview_row_enrollments.xml:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:padding="5dp" android:layout_width="150dp" android:layout_height="150dp"> <TextView android:id="@+id/info_text" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:background="@color/colorAccent"/> </LinearLayout> 

Как выглядит мой взгляд сейчас: введите описание изображения здесь

Вместо этого используйте GridLayoutManager .

Заменить:

 recyclerView.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) 

С:

 recyclerView.layoutManager = GridLayoutManager(context, 2) 

Замените ваш recyclerview.layoutManager из LinearLayoutManager в LinearLayoutManager GridLayoutManger GridLayoutManager.