Android - Kotlin的RecyclerView應用

Model設計

先設計一個bean成一個建構子的模樣,就是Kotlin File,型別加上?表示可能為null

data class DogBreed(
    val breedId: String?,
    val dogBreed: String?,
    val lifeSpan: String?,
    val breedGroup: String?,
    val bredFor: String?,
    val temperament: String?,
    val imageUrl: String?
)

RecyclerView Adapter

1.先設計項目的layout.xml,就自行設計

2. 自行新增一個Adapter

3.跟Java寫法一樣,先建內部類別XXViewHolder繼承自RecyclerView.ViewHolder。

4. 把onCreateViewHolder(),getItemCount(),onBindViewHolder()都實作完

//  2.再implement Adapter<ViewHolder>
class DogsListAdapter(val dogList: ArrayList<DogBreed>) : RecyclerView.Adapter<DogsListAdapter.DogViewHolder> (){
    //1.一樣先寫ViewHolder
    class DogViewHolder(var view : View) : RecyclerView.ViewHolder(view)

    //3.實作
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DogViewHolder {
        val inflater:LayoutInflater = LayoutInflater.from(parent.context)
        val view = inflater.inflate(R.layout.item_dog, parent, false)
        return DogViewHolder(view)
    }

    override fun getItemCount() = dogList.size

    override fun onBindViewHolder(holder: DogViewHolder, position: Int) {
        holder.view.name.text = dogList[position].dogBreed
        holder.view.lifespan.text = dogList[position].lifeSpan
    };

    fun updateDogList(newDogsList : List<DogBreed>)
    {
        dogList.clear();
        dogList.addAll(newDogsList)
        notifyDataSetChanged()
    }
}

Last updated