listview 的 selection mode 訓練小例子

  1. package com.example.listviewselectmode; android

  2. import android.R.integer; app

  3. import android.os.Bundle; ide

  4. import android.app.ListActivity; this

  5. import android.app.ListActivity; spa

  6. import android.view.ActionMode; get

  7. import android.view.Menu; it

  8. import android.view.MenuItem; io

  9. import android.widget.AbsListView.MultiChoiceModeListener; ast

  10. import android.widget.ArrayAdapter; class

  11. import android.widget.ListView; 

  12. import android.widget.Toast; 

  13.  

  14. public class MainActivity extends ListActivity { 

  15.      

  16.     String[] itemsStrings={"a","b","c","d","e"}; 

  17.  

  18.     @Override 

  19.     protected void onCreate(Bundle savedInstanceState) { 

  20.          

  21.         super.onCreate(savedInstanceState); 

  22.         ListView listView=getListView(); 

  23.         //注意此處沒有setContentView那一項 

  24.         listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 

  25.         listView.setMultiChoiceModeListener(new ModeChoice()); 

  26.         //注意該adapter的第二個參數爲android.R.layout.simple_list_item_checked 

  27.         ArrayAdapter<String> adapter=new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_checked, itemsStrings); 

  28.         setListAdapter(adapter); 

  29.     } 

  30.      

  31.     @Override 

  32.     protected void onPostCreate(Bundle savedInstanceState) { 

  33.         // TODO Auto-generated method stub 

  34.          

  35.         getActionBar().setTitle("long press to select"); 

  36.         super.onPostCreate(savedInstanceState); 

  37.          

  38.     } 

  39.  

  40.     class ModeChoice implements MultiChoiceModeListener{ 

  41.  

  42.         @Override 

  43.         public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 

  44.             // TODO Auto-generated method stub 

  45.             int count=getListView().getCheckedItemCount(); 

  46.             switch (item.getItemId()) { 

  47.             case R.id.share: 

  48.                 Toast.makeText(getApplicationContext(), "you share "+count+"項"1000).show(); 

  49.                 break

  50.             default

  51.                   Toast.makeText(MainActivity.this"Clicked " + item.getTitle(), 

  52.                             Toast.LENGTH_SHORT).show(); 

  53.                 break

  54.             } 

  55.              

  56.             return true

  57.         } 

  58.  

  59.         private void setSubtitle(ActionMode mode) { 

  60.             // TODO Auto-generated method stub 

  61.             int count=getListView().getCheckedItemCount(); 

  62.             switch (count) { 

  63.             case 0

  64.                 mode.setSubtitle(""); 

  65.                 break

  66.             case 1

  67.                 mode.setSubtitle("you select one item"); 

  68.                 break

  69.             default

  70.                 mode.setSubtitle("you select"+count+"items"); 

  71.                 break

  72.             } 

  73.         } 

  74.  

  75.         @Override 

  76.         public boolean onCreateActionMode(ActionMode mode, Menu menu) { 

  77.             // TODO Auto-generated method stub 

  78.             getMenuInflater().inflate(R.menu.main, menu); 

  79.             mode.setSubtitle("select item"); 

  80.             setSubtitle(mode); 

  81.             //此處需注意須要返回true 

  82.             return true

  83.         } 

  84.  

  85.         @Override 

  86.         public void onDestroyActionMode(ActionMode mode) { 

  87.             // TODO Auto-generated method stub 

  88.              

  89.         } 

  90.  

  91.         @Override 

  92.         public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 

  93.             // TODO Auto-generated method stub 

  94.              

  95.             return false

  96.         } 

  97.  

  98.         @Override 

  99.         public void onItemCheckedStateChanged(ActionMode mode, int position, 

  100.                 long id, boolean checked) { 

  101.             // TODO Auto-generated method stub 

  102.             setSubtitle(mode); 

  103.         } 

  104.          

  105.          

  106.     } 

  107.  

  108. }

相關文章
相關標籤/搜索