Skip to content

Commit 7c7871c

Browse files
committed
Add ability to return clicked View in item layout
- Updated setOnItemClickListener and setOnItemLongClickListener methods to accept lambdas that take both the clicked View and the item of type T. - Added CHANGELOG.md file. - Changed to use the stable version of OkHttp. - Version v1.0.9
1 parent f146468 commit 7c7871c

File tree

4 files changed

+40
-14
lines changed

4 files changed

+40
-14
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# CHANGELOG
2+
3+
## [1.0.9] - 2024-06-24
4+
### Added
5+
- Added the ability to return the specific `View` that was clicked in the item layout for `onItemClickListener` and `onItemLongClickListener`.
6+
- `CHANGELOG.md` file added.
7+
8+
### Changed
9+
- Updated the `setOnItemClickListener` and `setOnItemLongClickListener` methods to accept a lambda that takes both the clicked `View` and the item of type `T`.
10+
- Changed to use the stable version of OkHttp.

app/src/main/java/com/issever/issevercore/ui/fragments/catFacts/CatFactsFragment.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.issever.issevercore.ui.fragments.catFacts
22

3+
import android.util.Log
34
import androidx.fragment.app.activityViewModels
45
import com.issever.core.base.BaseFragment
56
import com.issever.core.util.extensions.observe
@@ -28,8 +29,11 @@ class CatFactsFragment : BaseFragment<FragmentCatFactsBinding, MainViewModel>()
2829
viewModel.getCatFacts()
2930

3031
binding.rvFacts.adapter = adapter
31-
adapter.setOnItemClickListener {
32-
viewModel.setFavoriteCatFact(it)
32+
33+
// `view` is the specific View within the item layout that was clicked.
34+
// This allows you to perform actions or access properties of the clicked View directly.
35+
adapter.setOnItemClickListener { item, view ->
36+
viewModel.setFavoriteCatFact(item)
3337
}
3438
}
3539

isseverCore/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ dependencies {
7575
implementation("com.squareup.retrofit2:converter-gson:$retrofitVersion")
7676

7777
// OkHttp
78-
val okHttpVersion = "5.0.0-alpha.2"
78+
val okHttpVersion = "4.12.0"
7979
implementation("com.squareup.okhttp3:logging-interceptor:$okHttpVersion")
8080

8181
// Navigation
@@ -96,7 +96,7 @@ afterEvaluate {
9696
from(components["release"])
9797
groupId = "com.github.issever22"
9898
artifactId = "iCore"
99-
version = "1.0.8"
99+
version = "1.0.9"
100100

101101
pom {
102102
name.set("iCore")

isseverCore/src/main/java/com/issever/core/base/BaseAdapter.kt

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.issever.core.base
22

33
import android.content.Context
44
import android.view.LayoutInflater
5+
import android.view.View
56
import android.view.ViewGroup
67
import androidx.recyclerview.widget.AsyncListDiffer
78
import androidx.recyclerview.widget.DiffUtil
@@ -28,15 +29,15 @@ abstract class BaseAdapter<T: Any, VB: ViewBinding>(
2829
})
2930
}
3031

31-
private var onItemClickListener: ((T) -> Unit)? = null
32+
private var onItemClickListener: ((T, View) -> Unit)? = null
3233

33-
fun setOnItemClickListener(listener: (T) -> Unit) {
34+
fun setOnItemClickListener(listener: (T, View) -> Unit) {
3435
onItemClickListener = listener
3536
}
3637

37-
private var onItemLongClickListener: ((T) -> Unit)? = null
38+
private var onItemLongClickListener: ((T, View) -> Unit)? = null
3839

39-
fun setOnItemLongClickListener(listener: (T) -> Unit) {
40+
fun setOnItemLongClickListener(listener: (T, View) -> Unit) {
4041
onItemLongClickListener = listener
4142
}
4243

@@ -54,13 +55,24 @@ abstract class BaseAdapter<T: Any, VB: ViewBinding>(
5455
val item = getItem(position)
5556
bind(holder, item,holder.binding.root.context)
5657

57-
holder.binding.root.setOnClickListener {
58-
onItemClickListener?.invoke(item)
59-
}
58+
setClickListenerForView(item,holder.binding.root)
59+
}
6060

61-
holder.binding.root.setOnLongClickListener {
62-
onItemLongClickListener?.invoke(item)
63-
true
61+
private fun setClickListenerForView(item: T, view: View) {
62+
if (view is ViewGroup) {
63+
for (i in 0 until view.childCount) {
64+
val child = view.getChildAt(i)
65+
setClickListenerForView(item,child)
66+
}
67+
} else {
68+
view.setOnClickListener {
69+
onItemClickListener?.invoke(item, it)
70+
}
71+
72+
view.setOnLongClickListener {
73+
onItemLongClickListener?.invoke(item, it)
74+
true
75+
}
6476
}
6577
}
6678

0 commit comments

Comments
 (0)