Skip to main content

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) {
...
}
}