aaverin
02/29/2016, 9:58 AMclass 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()
}
}