android 判断动画结束,在Android的RecyclerView中检测动画完成

本文探讨了RecyclerView中如何避免在删除动画过程中过早显示空视图的问题。作者分享了尝试使用ItemAnimator.isRunning方法的失败经历,并寻求更恰当的方法来确保在动画结束后更新空视图,以提供流畅的用户体验。
摘要由CSDN通过智能技术生成

RecyclerView与ListView不同,没有一种简单的方式来设置一个空的视图,所以人们必须手动管理它,使空的视图可见,以防适配器的项目数为0。

实现这一点,起初我试图在修改底层结构(我的case中的ArrayList)后调用空视图逻辑,例如:

btnRemoveFirst.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

devices.remove(0); // remove item from ArrayList

adapter.notifyItemRemoved(0); // notify RecyclerView's adapter

updateEmptyView();

}

});

它做的事情,但有一个缺点:当最后一个元素被删除时,删除动画完成之前立即出现空视图。所以我决定等到动画结束,然后更新UI。

令我惊讶的是,我无法找到一个好的方式来听RecyclerView中的动画事件。首先要想到的是使用isRunning方法,如下所示:

btnRemoveFirst.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

devices.remove(0); // remove item from ArrayList

adapter.notifyItemRemoved(0); // notify RecyclerView's adapter

recyclerView.getItemAnimator().isRunning(new RecyclerView.ItemAnimator.ItemAnimatorFinishedListener() {

@Override

public void onAnimationsFinished() {

updateEmptyView();

}

});

}

});

不幸的是,在这种情况下,回调会立即运行,因为在那一刻内部ItemAnimator仍然不处于“运行”状态。所以,问题是:如何正确使用ItemAnimator.isRunning()方法,并且有更好的方法来实现所需的结果,即在单个元素删除动画结束后显示空视图?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值