web-dev-qa-db-fra.com

Comment implémentez-vous le menu contextuel dans une liste d'écoute sur Android?

Comment implémentez-vous un menu contextuel déclenché par un clic long ou appuyez sur une liste qui utilise les dispositions intégrées et une liste de liste?

39
pupeno

Sur l'appel de méthode OnCreate registerforContextMen comme ceci:

registerForContextMenu(getListView());

puis remplir le menu sur OncreatecontextMenu (menu contextuelMenu, vue Affichage, contextMenuinfo MenuInfo) . L'argument MenuInfo peut fournir des informations sur lesquelles l'article a été cliqué à long terme de cette manière:

AdapterView.AdapterContextMenuInfo info;
try {
    info = (AdapterView.AdapterContextMenuInfo) menuInfo;
} catch (ClassCastException e) {
    Log.e(TAG, "bad menuInfo", e);
    return;
}
long id = getListAdapter().getItemId(info.position);

et vous ajoutez des éléments de menu de la manière habituelle appelant Menu.add :

menu.add(0, MENU_ITEM_ID, 0, R.string.menu_string);

et lorsque l'utilisateur choisit une option, oncontextItemselectemselected est appelé. Aussi Onmenuitemselected et ce fait n'est pas explicitement expliqué dans la documentation, sauf pour dire que vous utilisez l'autre méthode pour recevoir les appels du menu contextuel; Soyez juste au courant, ne partagez pas les identifiants.

Sur OncontextItemsEleceLied Vous pouvez obtenir une part de MenuInfo et donc l'ID de l'élément sélectionné en appelant getmenuinfo () :

try {
    info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
} catch (ClassCastException e) {
    Log.e(TAG, "bad menuInfo", e);
    return false;
}
long id = getListAdapter().getItemId(info.position);
74
pupeno

Vous devriez également regarder Activité.registerforContextMenu (vue) .

14
Romain Guy
listView = (ListView) findViewById(R.id.listpockets);
registerForContextMenu(listView);



public void onCreateContextMenu(Android.view.ContextMenu menu, View v, Android.view.ContextMenu.ContextMenuInfo menuInfo) {
    //AdapterContextMenuInfo info = (AdapterContextMenuInfo)menuInfo;
    menu.setHeaderTitle(getString(R.string.titleDelete));   
    menu.add(0, CommonUtil.CONTEXT_MENU__DELETE_ID, 0, getString(R.string.menuDelete));
};
@Override
public boolean onContextItemSelected(MenuItem item) {

    if(item.getItemId() == CommonUtil.CONTEXT_MENU__DELETE_ID)
    {
       AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
       long id = this.listView.getItemIdAtPosition(info.position);
       Log.d(TAG, "Item ID at POSITION:"+id);
    }
    else
    {
        return false;
    }
    return true;
}
5
Dhiral Pandya