Detect animation finish in Android's RecyclerView

后端 未结 9 1675
后悔当初
后悔当初 2020-12-29 02:31

The RecyclerView, unlike to ListView, doesn\'t have a simple way to set an empty view to it, so one has to manage it manually, making empty view vi

9条回答
  •  春和景丽
    2020-12-29 02:51

    What worked for me is the following:

    • detect that a view holder was removed
    • in this case, register a listener to be notified when dispatchAnimationsFinished() is called
    • when all animations are finished, call a listener to perform the task (updateEmptyView())

    public class CompareItemAnimator extends DefaultItemAnimator implements RecyclerView.ItemAnimator.ItemAnimatorFinishedListener {
    
    private OnItemAnimatorListener mOnItemAnimatorListener;
    
    public interface OnItemAnimatorListener {
        void onAnimationsFinishedOnItemRemoved();
    }
    
    @Override
    public void onAnimationsFinished() {
        if (mOnItemAnimatorListener != null) {
            mOnItemAnimatorListener.onAnimationsFinishedOnItemRemoved();
        }
    }
    
    public void setOnItemAnimatorListener(OnItemAnimatorListener onItemAnimatorListener) {
        mOnItemAnimatorListener = onItemAnimatorListener;
    }
    
    @Override
    public void onRemoveFinished(RecyclerView.ViewHolder viewHolder) {
        isRunning(this);
    }}
    

提交回复
热议问题