контекстное меню для представления списка внутри диалогового окна Android - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть настраиваемое диалоговое окно, которое содержит представление списка. Я хочу, чтобы контекстное меню появлялось, когда я долго нажимал на элемент списка в диалоге. Контекстное меню появляется, но ничего не происходит, когда я нажимаю на любой из его пунктов. Я предоставил действия, которые нужно выполнить при щелчке по контекстному меню, но ничего не происходит. Может кто-нибудь, пожалуйста, помогите?

     final ArrayList<ListClass> listItem = coreData_.listItem_;

    LayoutInflater inflater = (LayoutInflater) 
             GUI.this.getSystemService(LAYOUT_INFLATER_SERVICE);
    View layout = inflater.inflate(R.layout.scanlist,
                    (ViewGroup) findViewById(R.id.scan_dialog));
    AlertDialog.Builder  builder = 
             new AlertDialog.Builder(GUI.this);
    builder.setView(layout);

    scanListView_ = (ListView) 
            layout.findViewById(R.id.scan_list_view);

    registerForContextMenu(scanListView_);

    scanListView_.setOnCreateContextMenuListener(this);

    scanListView_.setBackgroundColor(Color.rgb(0, 0, 0));               

    scanListView_.setAdapter(
            new EfficientAdapter(getApplicationContext(),
                        listItem));

    scanListView_.setOnItemClickListener(new OnItemClickListener(){

        public void onItemClick(AdapterView<?> arg0, View arg1, 
                int position, long arg3) {

            //perform list item click actions
        }

    });

    builder.setNegativeButton("Cancel", 
            new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            //dismiss
        }
    });

    availNetDialog_ = builder.create();
    availNetDialog_.setTitle("Available Networks");
    availNetDialog_.show();

1 Ответ

1 голос
/ 05 марта 2017
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    // second argument show what item was selected
    menu.add(0, 0, 1, "Delet Row").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            if (item.getItemId() == 0) {
                // get item id from listView if needed
                AdapterView.AdapterContextMenuInfo acmi = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
                // extract id and transfer it to another method delRec
                delRec(acmi.id);
                //init();  
                return true;
            }
            return false;
        }
    });
}

В итоге просто установите setOnMenuItemClickListener и @Override onMenuItemClick.Надеюсь, это поможет :)

...