@@ -26,16 +26,22 @@ import com.hossainkhan.android.demo.R
2626import com.hossainkhan.android.demo.data.LayoutInformation
2727
2828class LayoutBrowseAdapter (
29- private val context : Context ,
3029 private val data : List <LayoutInformation >,
31- itemSelectedListener : (Int ) -> Unit ) : RecyclerView.Adapter<LayoutBrowseAdapter.ViewHolder>() {
30+ private val itemSelectedListener : (Int ) -> Unit ) : RecyclerView.Adapter<LayoutBrowseAdapter.ViewHolder>() {
3231
3332 // Provide a reference to the views for each data item
3433 // Complex data items may need more than one view per item, and
3534 // you provide access to all the views for a data item in a view holder.
3635 // Each data item is just a string in this case that is shown in a TextView.
37- class ViewHolder (val itemViewRoot : View ) : RecyclerView.ViewHolder(itemViewRoot) {
36+ class ViewHolder (itemViewRoot : View ,
37+ private val onClickListener : (Int ) -> Unit ) : RecyclerView.ViewHolder(itemViewRoot) {
3838 val itemName = itemViewRoot.findViewById<TextView >(R .id.layout_preview_name)!!
39+
40+ init {
41+ itemViewRoot.setOnClickListener {
42+ onClickListener(adapterPosition)
43+ }
44+ }
3945 }
4046
4147
@@ -46,8 +52,7 @@ class LayoutBrowseAdapter(
4652 .inflate(R .layout.list_item_layout_preview, parent, false )
4753 // set the view's size, margins, paddings and layout parameters
4854
49-
50- return ViewHolder (itemView)
55+ return ViewHolder (itemView, this ::itemClickHandler)
5156 }
5257
5358 // Replace the contents of a view (invoked by the layout manager)
@@ -60,4 +65,8 @@ class LayoutBrowseAdapter(
6065 // Return the size of your dataset (invoked by the layout manager)
6166 override fun getItemCount () = data.size
6267
68+ private fun itemClickHandler (position : Int ) {
69+ itemSelectedListener(data[position].layoutResourceId)
70+ }
71+
6372}
0 commit comments