如何禁用Android中特定ListView项目的上下文菜单

我知道这个问题以前被问过,答复是重写onPrepareContextMenu()/ onCreateContextMenu()。 但我不明白,没有得到任何解决scheme。 请帮助我如何禁用特定的ListView项目的上下文菜单。

Solutions Collecting From Web of "如何禁用Android中特定ListView项目的上下文菜单"

打开你的上下文菜单取决于你的一些逻辑。 例如,在方法onItemClick(在你的listView)你应该检查你的项目的内容,并显示或不显示上下文菜单。 我不明白,为什么这是你的问题?

UPDATE

public class ExampleActivity extends ListActivity { private ListView mListView; private ArrayList<String> mList = new ArrayList<String>(); private ArrayAdapter<String> mArrayAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mArrayAdapter = new ArrayAdapter<String>(this, android.R.id.list ,mList); mListView = (ListView) findViewById(android.R.id.list); setListAdapter(mArrayAdapter); registerForContextMenu(mListView); mListView.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> adapterView , View v,int position, long id) { mListView.getItemAtPosition(position); //check current item with your logic and show or don't show contextMenu // for example I will show mListView.showContextMenu(); //to show return true; } }); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // add contextmenu items super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { // todo some logic... return super.onContextItemSelected(item); } 

}

可能会帮助你…祝你好运…

你也可以重新注册你的listview,这将导致你的onCreateContextMenu方法再次执行

 ListView lv = (ListView) findViewById(R.id.lvExample); registerForContextMenu(lv); 

然后你可以在onCreateContextMenu方法中隐藏或显示你想要的任何逻辑的菜单项