как отключить контекстное меню для определенных элементов ListView в Android
Я знаю, что этот вопрос был задан ранее, и ответ должен был переопределить onPrepareContextMenu()/onCreateContextMenu(). Но я не понял и не получил никакого решения для этого. Пожалуйста, помогите мне отключить контекстное меню для определенных элементов ListView.
2 ответов
Открытие контекстного меню зависит от вашей логики. Например, в методе onItemClick (в вашем listView) вы должны проверить содержимое своего элемента и показать или не показывать контекстное меню. Я не понимаю, почему это для тебя проблема?
обновление
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
метод