Android 适配器

由于是安卓原生开发,肯定是少不了写适配器的

考虑到即使是cv也很费时间,所以写一个通用的适配器

class GenericAdapter<T>(
    private val items: List<T>,
    private val layoutId: Int,
    private val bind: (View, T) -> Unit
) : RecyclerView.Adapter<GenericAdapter.GenericViewHolder>() {

    class GenericViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GenericViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(layoutId, parent, false)
        return GenericViewHolder(view)
    }

    override fun onBindViewHolder(holder: GenericViewHolder, position: Int) {
        bind(holder.itemView, items[position])
    }

    override fun getItemCount() = items.size
}

use

需要设置每行的个数 binding.welfareType.layoutManager = GridLayoutManager(requireContext(),2)

val adapter = GenericAdapter(listOf("Item 1", "Item 2"), R.layout.item_layout) { view, item ->
    val textView: TextView = view.findViewById(R.id.textView)
    textView.text = item
}
recyclerView.adapter = adapter