activity kotlin RecyclerView 左滑删除item 代码实现
时间: 2023-06-16 19:04:16 浏览: 141
以下是 Kotlin 中使用 RecyclerView 实现左滑删除 item 的代码实现:
1. 在 RecyclerView 的 item 布局文件中添加一个滑动删除的按钮,例如使用 ImageButton 实现:
```xml
<ImageButton
android:id="@+id/btn_delete"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@color/colorAccent"
android:padding="16dp"
android:src="@drawable/ic_delete" />
```
2. 在 RecyclerView 的 ViewHolder 中设置按钮的点击事件,并定义一个接口用于回调删除事件:
```kotlin
class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(item: MyItem, listener: OnItemClickListener) = with(itemView) {
// 绑定 item 数据
// ...
// 设置删除按钮点击事件
btn_delete.setOnClickListener {
listener.onDeleteClick(adapterPosition)
}
}
}
interface OnItemClickListener {
fun onDeleteClick(position: Int)
}
```
3. 在 RecyclerView 的 Adapter 中实现删除事件的回调:
```kotlin
class MyAdapter(private val items: List<MyItem>, private val listener: OnItemClickListener) :
RecyclerView.Adapter<MyViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_my, parent, false)
return MyViewHolder(view)
}
override fun getItemCount() = items.size
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.bind(items[position], listener)
}
fun deleteItem(position: Int) {
// 删除数据
// ...
// 刷新界面
notifyItemRemoved(position)
}
}
```
4. 在 Activity 或 Fragment 中实现删除事件的具体操作:
```kotlin
class MyActivity : AppCompatActivity(), OnItemClickListener {
private lateinit var adapter: MyAdapter
private lateinit var recyclerView: RecyclerView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_my)
// 初始化 RecyclerView 和 Adapter
recyclerView = findViewById(R.id.recycler_view)
adapter = MyAdapter(getMyItems(), this)
recyclerView.adapter = adapter
// 设置 RecyclerView 的左滑删除功能
val swipeHandler = object : SwipeToDeleteCallback(this) {
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
val position = viewHolder.adapterPosition
adapter.deleteItem(position)
}
}
val itemTouchHelper = ItemTouchHelper(swipeHandler)
itemTouchHelper.attachToRecyclerView(recyclerView)
}
override fun onDeleteClick(position: Int) {
// 在这里实现删除 item 的具体操作,例如弹出确认对话框等
// ...
// 删除 item
adapter.deleteItem(position)
}
}
```
以上就是使用 Kotlin 实现 RecyclerView 左滑删除 item 的代码实现。注意,其中使用了 SwipeToDeleteCallback 类来实现左滑删除的功能,这个类需要自己实现。
阅读全文