Skip to content
This repository was archived by the owner on Aug 22, 2024. It is now read-only.

Commit 2964916

Browse files
committed
[UPDATE] [#2] Setup the click listener for the adapter.
1 parent 71d4146 commit 2964916

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

app/src/main/java/com/hossainkhan/android/demo/browse/LayoutBrowseAdapter.kt

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,22 @@ import com.hossainkhan.android.demo.R
2626
import com.hossainkhan.android.demo.data.LayoutInformation
2727

2828
class 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
}

app/src/main/java/com/hossainkhan/android/demo/browse/MainActivity.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ class MainActivity : AppCompatActivity() {
4545
appDataStore.updateFirstTimeUser(false)
4646

4747
viewManager = LinearLayoutManager(this)
48-
viewAdapter = LayoutBrowseAdapter(this, appDataStore.layoutStore.supportedLayoutInfos, { _ -> Unit })
48+
viewAdapter = LayoutBrowseAdapter(
49+
data = appDataStore.layoutStore.supportedLayoutInfos,
50+
itemSelectedListener = this::onLayoutItemSelected)
4951

5052
recyclerView = findViewById<RecyclerView>(R.id.recycler_view).apply {
5153
// use this setting to improve performance if you know that changes
@@ -59,4 +61,11 @@ class MainActivity : AppCompatActivity() {
5961
adapter = viewAdapter
6062
}
6163
}
64+
65+
fun onLayoutItemSelected(layoutResId: Int) {
66+
Timber.i("Selected layout id: %s", layoutResId)
67+
68+
startActivity(LayoutPositioningDemoActivity
69+
.createStartIntent(this, layoutResId))
70+
}
6271
}

0 commit comments

Comments
 (0)