我在我的一个程序中使用过它
我们是ListView.CHOICE_MODE_MULTIPLE_MODAL然后是lv.setMultiChoiceModeListener(new ModeCallBack());
public class ModeCallBack implements ListView.MultiChoiceModeListener{
View mSelectView;
TextView mSelectedCount;
ArrayList mCheckedItems;
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor edit = pref.edit();
if(item.getItemId() == R.id.bowler_delete){
for(int i=0; i
long id = mCheckedItems.get(i);
getActivity().getContentResolver().delete(BowlersDB.CONTENT_URI,BowlersDB.ID+"="+id,null);
}
}else if(item.getItemId() == R.id.bowler_add_ball){
if(mCheckedItems.size() > 1){
Toast.makeText(getActivity(),"Can only add bowling balls to one bowler at a time",Toast.LENGTH_SHORT).show();
}else{
edit.putLong(Preferences.BOWLER_SELECTED_FOR_BALL,mCheckedItems.get(0)).commit();
ListFragment lf = new ManufacturersList();
FragmentTransaction ft;
ft = getFragmentManager().beginTransaction();
ft.replace(R.id.frameOne, lf).addToBackStack(null).commit();
//mRemover.rFragment();
}
}else if(item.getItemId() == R.id.add_bowler_to_team){
for(int i=0; i
long id = mCheckedItems.get(i);
ContentValues values = new ContentValues();
values.put(TeamBowlers.BOWLER_ID,id);
values.put(TeamBowlers.TEAM_ID,pref.getLong(Preferences.TEAM_SELECTED,1));
getActivity().getContentResolver().insert(TeamBowlers.CONTENT_URI, values);
}
FragmentManager fm = getFragmentManager();
fm.popBackStack();
}
mode.finish();
return true;
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflate = getActivity().getMenuInflater();
if(fromTeam){
inflate.inflate(R.menu.bowlers_team_action_menu, menu);
}else{
inflate.inflate(R.menu.bowler_action_menu, menu);
}
if(mSelectView == null){
mSelectView = (ViewGroup)LayoutInflater.from(getActivity()).inflate(R.layout.select_count_layout,null);
mSelectedCount = (TextView)mSelectView.findViewById(R.id.count_tv);
}
if(mCheckedItems == null){
mCheckedItems = new ArrayList();
}
mode.setCustomView(mSelectView);
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
mCheckedItems = null;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
if(mSelectView == null){
mSelectView = (ViewGroup)LayoutInflater.from(getActivity()).inflate(R.layout.select_count_layout,null);
mSelectedCount = (TextView)mSelectView.findViewById(R.id.count_tv);
}
if(mCheckedItems == null){
mCheckedItems = new ArrayList();
}
return true;
}
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position,long id, boolean checked) {
final int count = lv.getCheckedItemCount();
mSelectedCount.setText(String.valueOf(count));
if(checked){
mCheckedItems.add(id);
}else{
mCheckedItems.remove(id);
}
}
}
这允许单选单列表视图单击和长按多个选择.这些都来自ICS消息传递应用程序,因此您也可以浏览它