RecyclerView 左滑(仿QQ左滑删除)

一、效果图

这里写图片描述

这里写图片描述

二、实现步骤

1.添加依赖库

(Android/Gradle Scripts/build.gradle(Module:app))

compile 'com.android.support:recyclerview-v7:26.+'

/*     版本号与 compile 'com.android.support:appcompat-v7:26.+',此句版本号为26.+      */

2.RecyclerView布局

(activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:background="#EEEEEE"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:overScrollMode="never" />

</RelativeLayout>

3.设置颜色选择器

(orange_background.xml)

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">
        <layer-list >
            <item >
                <shape >
                    <solid android:color="#f49405"/>
                </shape>
            </item>
            <item >
                <shape >
                    <solid android:color="#22000000"/>
                </shape>
            </item>
        </layer-list>
    </item>

    <item >
        <shape >
            <solid android:color="#f49405"/>
        </shape>
    </item>

</selector>

(app/res/drawable/pink_background.xml)

<?xml version="1.0" encoding="utf-8"?>

<!--颜色选择器-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">


    <!--按定“删除”按钮时该按钮显示的颜色:红色-->
    <item android:state_pressed="true">
        <layer-list >
            <item >
                <shape >
                    <solid android:color="#FF0000"/>
                </shape>
            </item>
            <item >
                <shape >
                    <solid android:color="#22000000"/>
                </shape>
            </item>
        </layer-list>
    </item>



    <!--“删除”按钮直接看上去的颜色:粉红色-->
    <item >
        <shape >
            <!--solid 实心,即填充-->
            <
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是 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. 在 RecyclerViewViewHolder 中设置按钮的点击事件,并定义一个接口用于回调删除事件: ```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 类来实现左滑删除的功能,这个类需要自己实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值