「kotlin ListView getView」で検索して出てきた
[Kotlin de Android] オリジナルなListViewを作ってみよう
の後半「リストビューにデータを表示しよう」の「独自アダプタを作ろう」の中に, 同様のコードが記載されています.
次に、view が null だった場合に、レイアウトと ViewHolder を生成していきます。
ViewHolder は view の tag に保持しておくことで、レイアウトの使い回しをしています。
view が null 以外だった場合には、view の tag に ViewHolder が格納されているはずなのでそれを使ってあげます。
kotlin
1class FlowerListAdapter(context: Context, flowers: List<FlowerData>) : ArrayAdapter<FlowerData>(context, 0, flowers) {
2 private val layoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
3
4 override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
5 var view = convertView
6 var holder: ViewHolder
7
8 if (view == null) {
9 view = layoutInflater.inflate(R.layout.list_item, parent, false)
10 holder = ViewHolder(
11 view?.nameTextView!!,
12 view.descTextView,
13 view.flowerImgView
14 )
15 view.tag = holder
16 } else {
17 holder = view.tag as ViewHolder
18 }
19 }
20}