List 表示
RecyclerView と ViewBinding
この設定をしておくと findViewById()
が不要になる・・?
kts
android {
...
buildFeatures {
viewBinding = true
}
}
kt
class MainFragment : Fragment() {
...
private lateinit var binding: MainFragmentBinding
// Chap 9 で詳しくやるそう
override fun onCreateView(
// return inflater.inflate(R.layout.main_fragment, container, false)
// ↑
// これはデフォルトの実装
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
// id: lists_recyclerview に対応
binding.listsRecyclerview.layoutManager = LinearLayoutManager(requireContext())
binding.listsRecyclerview.adapter = ListSelectionRecyclerViewAdapter()
binding = MainFragmentBinding.inflate(inflater, container, false)
return binding.root
}
新規
kt
class ListSelectionViewHolder(val binding: ListSelectionViewHolderBinding)
: RecyclerView.ViewHolder(binding.root) {
// これは layout/Resource に作成した list_selection_view_holder に対応
}
class ListSelectionRecyclerViewAdapter
: RecyclerView.Adapter<ListSelectionViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ListSelectionViewHolder {
val binding = ListSelectionViewHolderBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return ListSelectionViewHolder(binding)
}
override fun getItemCount(): Int {
return listTitles.size
}
override fun onBindViewHolder(holder: ListSelectionViewHolder, position: Int) {
...
}
}