gpt4 book ai didi

android - 如何添加 recyclerview item(s) 删除动画

转载 作者:行者123 更新时间:2023-11-29 00:57:59 25 4
gpt4 key购买 nike

当我使用它时,它会删除一个带有动画的元素

{
notificationItems.remove(0);
adapterForNotification.notifyItemRemoved(0);
adapterForNotification.notifyItemRangeRemoved(0,count-1);
}

但是,当我使用它时,它会删除所有没有动画的元素

count = adapter.getItemCount();
for(int i = 0 ; i < count; ++i){
notificationItems.remove(0);
adapterForNotification.notifyItemRemoved(0);
adapterForNotification.notifyItemRangeRemoved(0,count-1)
}

最佳答案

据我了解,您可以删除项目,但您需要在删除时添加某种动画。

这可以通过一次删除一个项目来完成,每个项目都有一个动画。

例如,通过一次在一个项目上模拟滑动动画,并在删除下一个项目之前延迟,依此类推直到 RecyclerView 的最后一个项目。

步骤:

第一步:

在您的 Activity 中,包含清除所有按钮和 RecyclerView实例:创建单项删除方法

private void deleteItem(View rowView, final int position) {

Animation anim = AnimationUtils.loadAnimation(requireContext(),
android.R.anim.slide_out_right);
anim.setDuration(300);
rowView.startAnimation(anim);

new Handler().postDelayed(new Runnable() {
public void run() {
if (myDataSource.size() == 0) {
addEmptyView(); // adding empty view instead of the RecyclerView
return;
}
myDataSource.remove(position); //Remove the current content from the array
myRVAdapter.notifyDataSetChanged(); //Refresh list
}

}, anim.getDuration());
}

第二步:

创建将删除所有RecyclerView 的方法列出项目 >> 在您的按钮点击回调中调用它。

boolean mStopHandler = false;

private void deleteAllItems() {

final Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {

if (myDataSource.size() == 0) {
mStopHandler = true;
}

if (!mStopHandler) {
View v = myRecyclerView.findViewHolderForAdapterPosition(0).itemView;
deleteItem(v, 0);
} else {
handler.removeCallbacksAndMessages(null);
}

handler.postDelayed(this, 250);
}
};
requireActivity().runOnUiThread(runnable);
}

处理 list 中的配置更改也很重要, Activity 部分,如果在清除回收器 View 列表时配置发生更改,则会引发异常

<activity
android:name=".activities.MainActivity"
android:configChanges="orientation|screenSize|keyboard"
android:label="@string/app_name"
...
</activity>

关于android - 如何添加 recyclerview item(s) 删除动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53208651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com