私はKotlin Androidアプリケーションで2x6(WxH)GridLayoutを取得しようとしています。私は自分のxmlとフラグメント/アダプタをRecyclerView用に設定していますが、これにGridLayoutを適用する方法については少し犠牲にしています。Kotlinの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>