Как реализовать контекстные меню для пользовательских ListViews? - PullRequest
0 голосов
/ 15 марта 2011

Как зарегистрировать ListView для контекстного меню при использовании настраиваемого ListView на основе BaseAdapter?

Я пытался registerForContextMenu(getListView());, но, похоже, это не работает. Я использую ListView14.java из демоверсий API.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setListAdapter(new EfficientAdapter(this));
    registerForContextMenu(getListView());
}




@Override
public void onCreateContextMenu(ContextMenu menu, View v,
                                ContextMenuInfo menuInfo) {
  super.onCreateContextMenu(menu, v, menuInfo);
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.tag_context_menu, menu);
}

@Override
public boolean onContextItemSelected(MenuItem item) {
  AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
  switch (item.getItemId()) {
  case R.id.tagView:
  //  editNote(info.id);
    return true;
  case R.id.tagRename:
   // deleteNote(info.id);
    return true;
  case R.id.tagDelete:
       // deleteNote(info.id);
        return true;
  default:
    return super.onContextItemSelected(item);
  }
}

1 Ответ

1 голос
/ 28 июня 2011

Вместо использования registerForContextMenu(getListView()), попробуйте назвать ваше представление списка в onCreate и использовать эту ссылку:

Listview myListView = (Listview) findViewById(R.id.myListView); //or use any other constructor
registerForContextMenu(myListView);

Это работает для всех элементов в моем Gridview с питанием от адаптера (хотя это оказывается невозможнымчтобы затем правильно добавить контекстное меню в само представление сетки, которое регистрирует длинные клики на пустых элементах сетки, но это совсем другая история :)), и я хотел бы представить, что Listview будет работать так же.

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