以前のリビジョンの文書です
package com.nekotype.ips.thechoice import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.BaseAdapter import android.widget.ImageView import kotlinx.android.synthetic.main.grid_item.view.* // ①抽象クラスの実装追加 class GridAdapter(val context: Context, val layoutid:Int, val iconlist:MutableList<Int>):BaseAdapter() { override fun getView(p0: Int, p1: View?, p2: ViewGroup): View? { // ③実装追加 val (viewHolder, view)=when(p1){ null->{ // grid_item -> view -> holder // grid_itemをインフレーとしてviewを作成 val view= LayoutInflater.from(p2?.context).inflate(R.layout.grid_item,p2,false) as View // ViewHolderを生成 val holder=ViewHolder() // ViewHolderとgrid_itemを関連づける holder.imageView=view.image_view view.tag=holder holder to view } else->{ p1.tag as ViewHolder to p1 } } // holderに値を設定する val objectItem = iconlist[p0] if (objectItem != null) { viewHolder.imageView?.setImageResource(R.drawable.man) } return view } override fun getItem(p0: Int): Any {null return 0 } override fun getItemId(p0: Int): Long { return 0 } override fun getCount(): Int { return iconlist.size } } // ②getViewで使うViewholderクラス追加。RecycleViewなら不要? internal class ViewHolder { var imageView: ImageView? = null }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="100dp" android:background="#afc" android:orientation="vertical" android:gravity="center" android:padding="3dp" > <ImageView android:id="@+id/image_view" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>