package com.basic.security.widget.hlistview.v11; import com.basic.security.widget.hlistview.AbsHListView; import android.annotation.TargetApi; import android.os.Build; import android.view.ActionMode; import android.view.Menu; import android.view.MenuItem; public class MultiChoiceModeWrapper implements MultiChoiceModeListener { private MultiChoiceModeListener mWrapped; private AbsHListView mView; public MultiChoiceModeWrapper( AbsHListView view ) { mView = view; } public void setWrapped( MultiChoiceModeListener wrapped ) { mWrapped = wrapped; } public boolean hasWrappedCallback() { return mWrapped != null; } @TargetApi( Build.VERSION_CODES.HONEYCOMB ) @Override public boolean onCreateActionMode( ActionMode mode, Menu menu ) { if ( mWrapped.onCreateActionMode( mode, menu ) ) { mView.setLongClickable( false ); return true; } return false; } @TargetApi( Build.VERSION_CODES.HONEYCOMB ) @Override public boolean onPrepareActionMode( ActionMode mode, Menu menu ) { return mWrapped.onPrepareActionMode( mode, menu ); } @TargetApi( Build.VERSION_CODES.HONEYCOMB ) @Override public boolean onActionItemClicked( ActionMode mode, MenuItem item ) { return mWrapped.onActionItemClicked( mode, item ); } @TargetApi( Build.VERSION_CODES.HONEYCOMB ) @Override public void onDestroyActionMode( ActionMode mode ) { mWrapped.onDestroyActionMode( mode ); mView.mChoiceActionMode = null; // Ending selection mode means deselecting everything. mView.clearChoices(); mView.mDataChanged = true; mView.rememberSyncState(); mView.requestLayout(); mView.setLongClickable( true ); } @TargetApi( Build.VERSION_CODES.HONEYCOMB ) @Override public void onItemCheckedStateChanged( ActionMode mode, int position, long id, boolean checked ) { mWrapped.onItemCheckedStateChanged( mode, position, id, checked ); // If there are no items selected we no longer need the selection mode. if ( mView.getCheckedItemCount() == 0 ) { mode.finish(); } } }