@Override public final View getView(int position, View convertView, ViewGroup parent) { ContextualUndoView contextualUndoView = (ContextualUndoView) convertView; if (contextualUndoView == null) { contextualUndoView = new ContextualUndoView(parent.getContext(), mUndoLayoutId, mCountDownTextViewResId); contextualUndoView .findViewById(mUndoActionId) .setOnClickListener(new UndoListener(contextualUndoView)); } View contentView = super.getView(position, contextualUndoView.getContentView(), contextualUndoView); contextualUndoView.updateContentView(contentView); long itemId = getItemId(position); if (itemId == mCurrentRemovedId) { contextualUndoView.displayUndo(); mCurrentRemovedView = contextualUndoView; long millisLeft = mAutoDeleteDelayMillis - (System.currentTimeMillis() - mDismissStartMillis); if (mCountDownFormatter != null) { mCurrentRemovedView.updateCountDownTimer( mCountDownFormatter.getCountDownString(millisLeft)); } } else { contextualUndoView.displayContentView(); } contextualUndoView.setItemId(itemId); return contextualUndoView; }
private void startAutoDeleteTimer() { mHandler.removeCallbacks(mCountDownRunnable); if (mCountDownFormatter != null) { mCurrentRemovedView.updateCountDownTimer( mCountDownFormatter.getCountDownString(mAutoDeleteDelayMillis)); } mDismissStartMillis = System.currentTimeMillis(); mHandler.postDelayed(mCountDownRunnable, Math.min(1000, mAutoDeleteDelayMillis)); }