``` class AdaptedLayoutDelegate(val viewGroup: Vie...
# announcements
a
Copy code
class AdaptedLayoutDelegate(val viewGroup: ViewGroup) {

    private var adapter: RecyclerView.Adapter<RecyclerView.ViewHolder>? = null
    fun <H : RecyclerView.ViewHolder> setAdapter(adapter: RecyclerView.Adapter<RecyclerView.ViewHolder>) {
        this.adapter = adapter
        onAdapterSet()
    }
    fun <H : RecyclerView.ViewHolder> getAdapter() : RecyclerView.Adapter<H>? {
        return adapter as RecyclerView.Adapter<H>?
    }
    private fun addTypedViewAt(viewType: Int, index: Int) {
        val viewHolder: RecyclerView.ViewHolder? = adapter?.onCreateViewHolder(viewGroup, viewType)
        viewGroup.addView(viewHolder?.itemView)
        adapter?.onBindViewHolder(viewHolder, index)
    }
}



class AdaptedLinearLayout : LinearLayout {

    constructor(context: Context) : super(context)
    constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
    constructor(context: Context, attrs: AttributeSet, style: Int) : super(context, attrs, style)

    val adapterDelegate: AdaptedLayoutDelegate by lazy {
        AdaptedLayoutDelegate(this)
    }

    fun setAdapter(adapter: RecyclerView.Adapter<RecyclerView.ViewHolder>) {
        adapterDelegate.setAdapter(adapter)
    }

    fun getAdapter() : RecyclerView.Adapter<RecyclerView.ViewHolder>? {
        return adapterDelegate.getAdapter()
    }
}