как отключить контекстное меню для определенных элементов ListView в Android - PullRequest
6 голосов
/ 18 марта 2012

Я знаю, что этот вопрос задавался ранее, и ответ должен был переопределить onPrepareContextMenu () / onCreateContextMenu ().Но я не понял и не получил никакого решения для этого.Пожалуйста, помогите мне, как отключить контекстное меню для определенных элементов ListView.

Ответы [ 2 ]

5 голосов
/ 18 марта 2012

Открытие вашего контекстного меню зависит от вашей логики.Например, в методе 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);
    }

}

Может быть, это поможет вам ... удачи ...

1 голос
/ 12 июля 2013

Также вы можете перерегистрировать ваш просмотр списка, что приведет к повторному выполнению метода onCreateContextMenu

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

И затем вы можете скрыть или отобразить пункты меню с любой логикой, которую вы хотите, в методе onCreateContextMenu

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...