package com.example.listviewselectmode; android
import android.R.integer; app
import android.os.Bundle; ide
import android.app.ListActivity; this
import android.app.ListActivity; spa
import android.view.ActionMode; get
import android.view.Menu; it
import android.view.MenuItem; io
import android.widget.AbsListView.MultiChoiceModeListener; ast
import android.widget.ArrayAdapter; class
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends ListActivity {
String[] itemsStrings={"a","b","c","d","e"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListView listView=getListView();
//注意此處沒有setContentView那一項
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new ModeChoice());
//注意該adapter的第二個參數爲android.R.layout.simple_list_item_checked
ArrayAdapter<String> adapter=new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_checked, itemsStrings);
setListAdapter(adapter);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
getActionBar().setTitle("long press to select");
super.onPostCreate(savedInstanceState);
}
class ModeChoice implements MultiChoiceModeListener{
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
// TODO Auto-generated method stub
int count=getListView().getCheckedItemCount();
switch (item.getItemId()) {
case R.id.share:
Toast.makeText(getApplicationContext(), "you share "+count+"項", 1000).show();
break;
default:
Toast.makeText(MainActivity.this, "Clicked " + item.getTitle(),
Toast.LENGTH_SHORT).show();
break;
}
return true;
}
private void setSubtitle(ActionMode mode) {
// TODO Auto-generated method stub
int count=getListView().getCheckedItemCount();
switch (count) {
case 0:
mode.setSubtitle("");
break;
case 1:
mode.setSubtitle("you select one item");
break;
default:
mode.setSubtitle("you select"+count+"items");
break;
}
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
getMenuInflater().inflate(R.menu.main, menu);
mode.setSubtitle("select item");
setSubtitle(mode);
//此處需注意須要返回true
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
// TODO Auto-generated method stub
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
// TODO Auto-generated method stub
setSubtitle(mode);
}
}
}