Skip to content

Commit 0eb0573

Browse files
committed
recycleradapter新增单击长按事件
1 parent f5b2a8e commit 0eb0573

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

library/src/main/java/com/yhw/library/adapter/BaseRecyclerAdapter.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ import androidx.recyclerview.widget.RecyclerView
1818
*/
1919
abstract class BaseRecyclerAdapter<T>(private var dataList: MutableList<T>) :
2020
RecyclerView.Adapter<BaseRecyclerAdapter.RecyclerViewHolder>(), IAdapter<T> {
21+
open var onItemClickListener: OnItemClickListener? = null
22+
open var onItemLongClickListener: OnItemLongClickListener? = null
23+
2124
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerViewHolder {
2225
val view =
2326
LayoutInflater.from(parent.context).inflate(getItemLayoutId(viewType), parent, false)
@@ -26,6 +29,17 @@ abstract class BaseRecyclerAdapter<T>(private var dataList: MutableList<T>) :
2629

2730
override fun onBindViewHolder(holder: RecyclerViewHolder, position: Int) {
2831
onBindViewItem(holder, position, dataList[position])
32+
if (onItemClickListener != null) {
33+
holder.itemView.setOnClickListener {
34+
onItemClickListener?.onItemClick(position, holder.itemView)
35+
}
36+
}
37+
if (onItemLongClickListener != null) {
38+
holder.itemView.setOnLongClickListener {
39+
onItemLongClickListener?.onItemLongClick(position, holder.itemView)
40+
true
41+
}
42+
}
2943
}
3044

3145
override fun getItemCount(): Int {
@@ -183,6 +197,14 @@ abstract class BaseRecyclerAdapter<T>(private var dataList: MutableList<T>) :
183197
val checkBox: CheckBox = getView(viewId)
184198
checkBox.isChecked = isChecked
185199
}
200+
}
201+
202+
interface OnItemClickListener {
203+
fun onItemClick(position: Int, view: View)
204+
}
186205

206+
interface OnItemLongClickListener {
207+
fun onItemLongClick(position: Int, view: View)
187208
}
209+
188210
}

sample/src/main/java/com/yhw/demo/RecyclerViewActivity.kt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,22 @@ class RecyclerViewActivity : AppCompatActivity() {
3030
recyclerView.layoutManager = LinearLayoutManager(this)
3131
val adapter = MyRecyclerAdapter(dataList)
3232
recyclerView.adapter = adapter
33+
//单击
34+
adapter.onItemClickListener =object: BaseRecyclerAdapter.OnItemClickListener {
35+
override fun onItemClick(position: Int, view: View) {
36+
if(!adapter.isShowCheckBox){
37+
Toast.makeText(this@RecyclerViewActivity, "item => $position", Toast.LENGTH_SHORT)
38+
.show()
39+
}
40+
}
41+
}
42+
//长按
43+
adapter.onItemLongClickListener = object : BaseRecyclerAdapter.OnItemLongClickListener {
44+
override fun onItemLongClick(position: Int, view: View) {
45+
Toast.makeText(this@RecyclerViewActivity, "长按 => $position", Toast.LENGTH_SHORT)
46+
.show()
47+
}
48+
}
3349

3450
/**
3551
* 操作数据,增删改
@@ -147,8 +163,6 @@ class RecyclerViewActivity : AppCompatActivity() {
147163
}
148164
return@setOnClickListener
149165
}
150-
Toast.makeText(this@RecyclerViewActivity, "item => $position", Toast.LENGTH_SHORT)
151-
.show()
152166
}
153167
}
154168

0 commit comments

Comments
 (0)