RecyclerView 动画 onRemove 与固定项目

RecyclerView animation onRemove with fixed item

我想知道如何强制 RecyclerView 在删除具有固定位置和特定布局的项目之前执行 proper/nice 动画。

我已尝试在此基础上构建 tutorial,在满足我的特定要求之前效果很好。

只需对教程代码进行简单更改:

@Override
public int getItemViewType(int position) {
    if(position == 3){
        return IREGULAR;
    }
    return REGULAR;
}

@Override
public ColorViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view;
    if(viewType == REGULAR) {
         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);

    }else{
        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_iregular, parent, false);
    }

    // rest of tutorial code down here
}

@Override
public void onBindViewHolder(ColorViewHolder holder, int position) {
    int color;
    if(getItemViewType(position) == REGULAR) {
        color = colors.get(position);
    }else{
        color = 0xFF000000;
    }
    // rest of tutorial code down here
}

所以第三项会高一点,而且总是黑色的。

正如您在上图中看到的那样,在删除第三个位置以下的项目(不规则的)之前,动画工作正常,但是当它在上面时,然后大黑色 space 出现在项目重新绑定的地方。 如何实现更好的动画体验?

删除一行后,必须调用以下方法:

notifyItemRemoved(position);
notifyItemRangeChanged(position, getItemCount());