iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 10
0

ImageList

ImageList

RecycleView

實作 RecycleView 需要建立一個 Adapter 的專屬 Class

class ImageAdapter(val context:Context, val city:List<ImageData>): RecyclerView.Adapter<ImageAdapter.ViewHolder>()

裡面需要 override 三個主要的 function 分別是

override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int):ViewHolder {
        val view = LayoutInflater.from(viewGroup.context).inflate(R.layout.image_list_item, viewGroup, false)
        return ViewHolder(view)
    }

這個 function 主要負責建立 ViewHolder 此時我們可以選擇使用預設值或自訂。
我們可以透過 建立 View 並回傳給 ViewHolder

override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {

        viewHolder.bindImage(context, city[position])

    }

這裡會透過 viewHolder 呼叫bindImage(在自訂義的ViewHolder內所建立的function) 來讓資料與RecycleView 結合

override fun getItemCount(): Int {
        return city.size
    }

計算資料的筆數,讓RecycleView能夠知道需要多少載入多少資料。

除此之外,我們還需要建立一個 inner class 自定義我們的 ViewHolder。

inner class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {

        fun bindImage(context: Context, imageData: ImageData) {

            val resourceId = context.resources.getIdentifier(imageData.cityImage, "drawable", context.packageName)
            itemView.cityImageView.setImageResource(resourceId)
            itemView.cityTextView.text = imageData.cityName

        }
    }

我們在 inner class 裡寫了一個 function 來將資料與 View 連結。

結合以上,我們就完成了 RecyclerView 的實作了。

今天就先這樣囉,我們明天見。


上一篇
Day9_WebViewSearch
下一篇
Day11_BottomNavigation
系列文
發現新大陸-Android Kotlin 開發之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言