@Override public boolean onContextItemSelected(android.view.MenuItem item) { if (!(item.getMenuInfo() instanceof AdapterContextMenuInfo)) return super.onContextItemSelected(item); Log.d(TAG, "Context menu called"); AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); switch (item.getItemId()) { case R.id.add_to_watch: /* * Implement code to toggle watch of this novel */ if (info.position > -1) { PageModel novel = listItems.get(info.position); if (novel.isWatched()) { novel.setWatched(false); Toast.makeText( getSherlockActivity(), "Removed from watch list: " + novel.getTitle(), Toast.LENGTH_SHORT) .show(); } else { novel.setWatched(true); Toast.makeText( getSherlockActivity(), "Added to watch list: " + novel.getTitle(), Toast.LENGTH_SHORT) .show(); } NovelsDao.getInstance(getSherlockActivity()).updatePageModel(novel); adapter.notifyDataSetChanged(); } return true; case R.id.download_novel: /* * Implement code to download novel synopsis */ if (info.position > -1) { PageModel novel = listItems.get(info.position); ArrayList<PageModel> novels = new ArrayList<PageModel>(); novels.add(novel); touchedForDownload = novel.getTitle() + "'s information"; executeDownloadTask(novels); } return true; case R.id.delete_novel: if (info.position > -1) { toggleProgressBar(true); PageModel novel = listItems.get(info.position); boolean result = NovelsDao.getInstance(getSherlockActivity()).deleteNovel(novel); if (result) { listItems.remove(novel); adapter.notifyDataSetChanged(); } toggleProgressBar(false); } return true; default: return super.onContextItemSelected(item); } }