當需要圖文並茂時,就需要客製化Adapter。
建立資料
data class Item{
val photo: Int,
val name: String
}
//宣告一個ArrayList,內部為自行設計的Item類別
val item = ArrayList<Item>()
//用迴圈產生資料,並放入ArrayList中
for(i in 0 until 10)
item.add(Item(i, "水果${i+1}"))
設計項目的Layout
圖片用ImageView、文字用TextView
建立客製化Adapter
class MyAdapter(context: Context, private val data: ArrayList<Item>) :
ArrayAdapter<Item>(context, R. layout.adapter _horizontal, data) {
//回傳資料集合的數量
override fun getCount() = data.size
//回傳指定位置的資料
override fun getItem(position: Int) = data[position]
//回傳指定位置的資料識別標鐵
override fun getItemId(position: Int) = OL
//回傅指定位置的項目畫面
override fun getView(position: Int, convertView: View?,parent: ViewGroup) : View {
//依據adapter_horizontal建立畫面
val view = View.inflate(parent.context, R.layout.adapter_horizontal, null)
//依據position取得對應的資料内容
val item = getItem(position) ?: return view
//將資料指派給元件呈現
val img_photo = view.findViewById<ImageView>(R.id.img_photo)
val tv_name = view.findViewById<TextView>(R.id.tv_name)
img_photo.setImageResource (item.photo)
tv_name.text = item.name
//回傳此項目的畫面
return view
}
}