Tencent / QMUI_Android

提高 Android UI 开发效率的 UI 库
http://qmuiteam.com/android
Other
14.46k stars 2.68k forks source link

使用SwipeSingleDeleteAction删除功能时 最后一个item点击删除动画卡住没有执行完毕 #927

Open zjw950323 opened 4 years ago

zjw950323 commented 4 years ago

运行环境

具体问题描述

购物车功能侧滑删除时使用点击事件 最后一个item删除后 动画不能执行完毕

问题截图

![Uploading 31589454063_.pic_hd.jpg…]()

Layout Inspector 文件([如何获取]

异常日志(堆栈)

zjw950323 commented 4 years ago

31589454063_ pic_hd

cgspine commented 4 years ago

我在demo上测试正常? 没有notifyItemRemoved ?

zjw950323 commented 4 years ago

前面的列表删除都没问题,就是到最后一个滑动删除也没问题,就是点击删除会遇见,notifyItemRemoved执行了

cgspine commented 4 years ago

QMUIDemo 上能够重现吗?我的设备始终没法重现

zjw950323 commented 4 years ago

QMUIDemo上 一直是没问题的 我这里的代码也是从QMUIDemo上直接拉过来的 viewholder也继承了QMUISwipeViewHolder

cgspine commented 4 years ago

贴一下 onClickAction 的逻辑?

zjw950323 commented 4 years ago

//item横向滑动删除 private fun setDeleteItem() { val swipeAction = QMUIRVItemSwipeAction(true, object : QMUIRVItemSwipeAction.Callback() { override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { position = viewHolder.adapterPosition if (!isLoading) { showLoading() mPresenter.getShopCarDelete(mList[position].id) mShopCarAdapter.remove(position) } }

            override fun getSwipeDirection(
                recyclerView: RecyclerView,
                viewHolder: RecyclerView.ViewHolder
            ): Int {
                return QMUIRVItemSwipeAction.SWIPE_LEFT
            }

            override fun onClickAction(
                swipeAction: QMUIRVItemSwipeAction,
                selected: RecyclerView.ViewHolder,
                action: QMUISwipeAction
            ) {
                super.onClickAction(swipeAction, selected, action)
                position = selected.adapterPosition
                if (!isLoading) {
                    showLoading()
                    mPresenter.getShopCarDelete(mList[position].id)
                    mShopCarAdapter.remove(position)
                }
            }
        })
    swipeAction.attachToRecyclerView(recyclerView)
    recyclerView.layoutManager = object : LinearLayoutManager(context) {
        override fun generateDefaultLayoutParams(): RecyclerView.LayoutParams {
            return RecyclerView.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT
            )
        }
    }
    mShopCarAdapter = ShopCarAdapter(mList, context!!)
    recyclerView.adapter = mShopCarAdapter
}
CrossYourSoul commented 4 years ago

前面的列表删除都没问题,就是到最后一个滑动删除也没问题,就是点击删除会遇见,notifyItemRemoved执行了

我也碰到同样的问题 ,请问解决了吗 qmui版本 2.0.0-alpha10 Demo也是没问题的

cgspine commented 4 years ago

能够提供一个可以重现的demo吗?我是怎样都没重现的

zjw950323 commented 4 years ago

周末吧 我提交一份

------------------ 原始邮件 ------------------ 发件人: "cgspine"<notifications@github.com>; 发送时间: 2020年7月20日(星期一) 下午4:24 收件人: "Tencent/QMUI_Android"<QMUI_Android@noreply.github.com>; 抄送: " "<zuoyouzhilian@qq.com>; "Author"<author@noreply.github.com>; 主题: Re: [Tencent/QMUI_Android] 使用SwipeSingleDeleteAction删除功能时 最后一个item点击删除动画卡住没有执行完毕 (#927)

能够提供一个可以重现的demo吗?我是怎样都没重现的

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

zjw950323 commented 4 years ago

我重新写了一个demo 没有重现 看来应该是当初的逻辑写的有问题 很简单的demo就没有出来这个问题