例子实现效果如图

 

代码如下:

 

   
   
   
   
  1. package com.example.listviewselectmode; 
  2.  
  3.  
  4. import android.R.integer; 
  5. import android.os.Bundle; 
  6. import android.app.ListActivity; 
  7. import android.app.ListActivity; 
  8. import android.view.ActionMode; 
  9. import android.view.Menu; 
  10. import android.view.MenuItem; 
  11. import android.widget.AbsListView.MultiChoiceModeListener; 
  12. import android.widget.ArrayAdapter; 
  13. import android.widget.ListView; 
  14. import android.widget.Toast; 
  15.  
  16. public class MainActivity extends ListActivity { 
  17.      
  18.     String[] itemsStrings={"a","b","c","d","e"}; 
  19.  
  20.     @Override 
  21.     protected void onCreate(Bundle savedInstanceState) { 
  22.          
  23.         super.onCreate(savedInstanceState); 
  24.         ListView listView=getListView(); 
  25.         //注意此处没有setContentView那一项 
  26.         listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 
  27.         listView.setMultiChoiceModeListener(new ModeChoice()); 
  28.         //注意该adapter的第二个参数为android.R.layout.simple_list_item_checked 
  29.         ArrayAdapter adapter=new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_checked, itemsStrings); 
  30.         setListAdapter(adapter); 
  31.     } 
  32.      
  33.     @Override 
  34.     protected void onPostCreate(Bundle savedInstanceState) { 
  35.         // TODO Auto-generated method stub 
  36.          
  37.         getActionBar().setTitle("long press to select"); 
  38.         super.onPostCreate(savedInstanceState); 
  39.          
  40.     } 
  41.  
  42.     class ModeChoice implements MultiChoiceModeListener{ 
  43.  
  44.         @Override 
  45.         public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
  46.             // TODO Auto-generated method stub 
  47.             int count=getListView().getCheckedItemCount(); 
  48.             switch (item.getItemId()) { 
  49.             case R.id.share: 
  50.                 Toast.makeText(getApplicationContext(), "you share "+count+"项"1000).show(); 
  51.                 break
  52.             default
  53.                   Toast.makeText(MainActivity.this"Clicked " + item.getTitle(), 
  54.                             Toast.LENGTH_SHORT).show(); 
  55.                 break
  56.             } 
  57.              
  58.             return true
  59.         } 
  60.  
  61.         private void setSubtitle(ActionMode mode) { 
  62.             // TODO Auto-generated method stub 
  63.             int count=getListView().getCheckedItemCount(); 
  64.             switch (count) { 
  65.             case 0
  66.                 mode.setSubtitle(""); 
  67.                 break
  68.             case 1
  69.                 mode.setSubtitle("you select one item"); 
  70.                 break
  71.             default
  72.                 mode.setSubtitle("you select"+count+"items"); 
  73.                 break
  74.             } 
  75.         } 
  76.  
  77.         @Override 
  78.         public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
  79.             // TODO Auto-generated method stub 
  80.             getMenuInflater().inflate(R.menu.main, menu); 
  81.             mode.setSubtitle("select item"); 
  82.             setSubtitle(mode); 
  83.             //此处需注意需要返回true 
  84.             return true
  85.         } 
  86.  
  87.         @Override 
  88.         public void onDestroyActionMode(ActionMode mode) { 
  89.             // TODO Auto-generated method stub 
  90.              
  91.         } 
  92.  
  93.         @Override 
  94.         public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
  95.             // TODO Auto-generated method stub 
  96.              
  97.             return false
  98.         } 
  99.  
  100.         @Override 
  101.         public void onItemCheckedStateChanged(ActionMode mode, int position, 
  102.                 long id, boolean checked) { 
  103.             // TODO Auto-generated method stub 
  104.             setSubtitle(mode); 
  105.         } 
  106.          
  107.          
  108.     } 
  109.  

listview 的 selection mode 训练小例子_第1张图片