import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
public class ContextMenuSample extends Activity {
protected static final int CONTEXTMENU_DELETEITEM = 0;
protected ListView mFavList;
protected ArrayList<Favorite> fakeFavs = new ArrayList<Favorite>();
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
fakeFavs.add(new Favorite("John", "nice guy"));
fakeFavs.add(new Favorite("Yasmin", "hot girl"));
fakeFavs.add(new Favorite("Jack", "cool guy"));
this.mFavList = (ListView) this.findViewById(R.id.list_favorites);
// this triggers the ContextMenu of an Item in the List with just a Click
mFavList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
arg1.showContextMenu();
}
});
initListView();
}
private void refreshFavListItems() {
mFavList.setAdapter(new ArrayAdapter<Favorite>(this, android.R.layout.simple_list_item_1, fakeFavs));
}
private void initListView() {
refreshFavListItems();
mFavList.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menu.setHeaderTitle("ContextMenu");
menu.add(0, CONTEXTMENU_DELETEITEM, 1, "Delete this favorite!");
}
});
}
public boolean onContextItemSelected(MenuItem aItem) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) aItem.getMenuInfo();
switch (aItem.getItemId()) {
case CONTEXTMENU_DELETEITEM:
Favorite favContexted = (Favorite) mFavList.getAdapter().getItem(info.position);
fakeFavs.remove(favContexted);
refreshFavListItems();
return true;
}
return false;
}
protected class Favorite {
protected String name;
protected String kindness;
protected Favorite(String name, String kindness) {
this.name = name;
this.kindness = kindness;
}
public String toString() {
return name + " (" + kindness + ")";
}
public boolean equals(Object o) {
return o instanceof Favorite && ((Favorite) o).name.compareTo(name) == 0;
}
}
}